웹사이트에 x.asp;x.jpg로 업로드 하는 경우. 해당 파일에 직접 접근해보면
IIS5.0(Windows2k)에서는 안됬지만, IIS6.0(Windows2k3)에서는 asp인식해서 성공적으로 실행이 된다.
이외에 IIS6.0에 php를 사용하는 경우도 OK -> ex.php;ex.jpg
Apache를 쓰는경우 당연히 문제가 없다.
 
해당 취약점에 대해서 검색해보면 중국 사이트 들 밖에 안나온다.
검색어가 잘못된 것인지, 이슈화가 안된것인지는 모르겠다.

위의 x.asp;x.jpg 로 검색해보면 중국사이트들만 엄청나게 열광하고 있는 것처럼 보인다.

한국사이트는 아래 둘.
찾은 관련 페이지들 검색어 "iis 6 파싱 취약점"
http://www.whoisweb.net/board/view.php ··· %3D94645 (새 창으로 열기)
http://coffeenix.net/bbs/viewtopic.php?p=5812 (새 창으로 열기)

위 글에서는 iis5도 취약대상이라고 써있지만 내가 테스트할 때 iis5는 취약하지 않았다.

이렇듯 이 취약점을 이용하면 정상적인 그림파일 처럼 웹쉘을 업로드 하여서 실행할 수 있으므로 주의 해야 한다.
기본적으로 보안의식을 갖고 홈페이지를 운영한다면 아래 사항을 잘 지키고 있을 테니 문제가 될 것이 없겠지만, 아니라면 한번씩 점검해보도록 하자.

1. 업로드 폴더에 실행권한을 주지 않을 것
2. 업로드 파일 필터링 할 때 특수문자 필터링 강화 할 것.
3. 업로드 폴더에 쉘명령어를 포함한 파일이 있는지 검사하는 크론을 세팅

로 막을 수 있겠다 이번 10월 보안패치에는 포함되지 않은 것 같다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/10/16 08:55 2009/10/16 08:55
BASE64 인코딩, 디코딩

#http://www.ruby-doc.org/core/

#base64_encode

require 'base64'

Base64.b64encode("Now is the time for all good coders\nto learn Ruby")

 

#http://www.ruby-doc.org/core/

#base64 decode

require 'base64'

str = 'VGhpcyBpcyBsaW5lIG9uZQpUaGlzIG' +

'lzIGxpbmUgdHdvClRoaXMgaXMgbGlu' +

'ZSB0aHJlZQpBbmQgc28gb24uLi4K'

puts Base64.decode64(str)


Block TCP Socket

#http://rubylearning.com/satishtalim/ruby_socket_programming.html

#Block TCP Server

require "socket"

dts = TCPServer.new('localhost', 20000)

loop do

Thread.start(dts.accept) do |s|

print(s, " is accepted\n")

s.write(Time.now)

print(s, " is gone\n")

s.close

end

end

# p069dtclient.rb

# http://rubylearning.com/satishtalim/ruby_socket_programming.html

# block TCP Client

require 'socket'

streamSock = TCPSocket.new( "127.0.0.1", 20000 )

#streamSock.send( "Hello\n" )

str = streamSock.recv( 100 )

print str

streamSock.close


NonBlock TCP Socket

#www.ruby-doc.org/core

#nonblock TCP Server,Client

require "socket"

serv = TCPServer.new("127.0.0.1", 200020000)

af, port, host, addr = serv.addr

c = TCPSocket.new(addr,port)

s = serv.accept

c.send "12345678910", 0

IO.select([s])

p s.recv_nonblock(10) #=> "aaa"

print p


URI 인코딩/디코딩

require 'uri'

enc_uri = URI.escape("http://example.com/?a=\11\15")

p enc_uri

# => "http://example.com/?a=%09%0D"

p URI.unescape(enc_uri)

# => "http://example.com/?a=\t\r"

p URI.escape("@?@!", "!?")

# => "@%3F@%21"

require 'uri'

enc_uri = URI.escape("http://example.com/?a=\11\15")

p enc_uri

# => "http://example.com/?a=%09%0D"

p URI.unescape(enc_uri)

# => http://example.com/?a=\t\r


HTTP Get

require 'net/http'
require 'uri'

Net::HTTP.get_print URI.parse('http://www.example.com/index.html')


HTTP Post

require 'net/http'

require 'uri'

#1: Simple POST

res = Net::HTTP.post_form(URI.parse('http://www.example.com/search.cgi'),

{'q'=>'ruby', 'max'=>'50'})

puts res.body

#2: POST with basic authentication

res = Net::HTTP.post_form(URI.parse('http://jack:pass@www.example.com/todo.cgi'),

puts res.body

#3: Detailed control

url = URI.parse('http://www.example.com/todo.cgi')

req = Net::HTTP::Post.new(url.path)

req.basic_auth 'jack', 'pass'

req.set_form_data({'from'=>'2005-01-01', 'to'=>'2005-03-31'}, ';')

res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }

case res

when Net::HTTPSuccess, Net::HTTPRedirection

# OK

else

res.error!

end

이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/10/05 16:03 2009/10/05 16:03
ruby api 정리 :: 2009/10/05 16:03 공부/web

SSL Decrypting Packet capture

 

http://wiki.wireshark.org/SSL

http://www.novell.com/coolsolutions/ap ··· html%232 (새 창으로 열기)

https://www.carbonwind.net/blog/post/2009/04/10/Using-Wireshark-to-decrypt-HTTPS-traffic-when-a-secure-web-server-is-published-with-ISA-Server-2006.aspx

 

First links Solution?

http://forums.macosxhints.com/showthread.php?t=23083

 

Ive this problem

 

sudo openssl pkcs8 -in rsasnakeoil2.key  -inform der -out key.pem -outform PEM

Error reading key

6280:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:

6280:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:380:Type=X509_SIG

이올린에 북마크하기
2009/09/22 16:00 2009/09/22 16:00
firefox가 3.5로 update되고 firebug가 빠르게 1.4.0b로 update되었습니다.

하지만 뒤의 b가 암시하듯이 아직 베타버전이라 호환성에 문제가 많이 있는 듯 보여집니다.

매번 XE 모듈을 제작하면서 firebug로 debuging을 했는데 firefox가 업데이트 되었길레 add-on 목록에 firebug가 3.5호환으로 업데이트 되어있는 것을 확인하고 업데이트를 하였습니다.

하지만 여기서 실수한 것이 firePHP 0.3.1 릴리즈에 써있는 firebug 1.3.3 까지 지원 이라는 문구를 간과했습니다.

마침 개발중이던 사이트도 XE 1.2.4로 업데이트 한 터라 firebug console에 메세지가 하나도 출력안되는 현상의 이유를 XE에서 먼저 찾기시작해서 2시간여 삽질끝에 firebug 1.4.0b과 firePHP 0.3.1의 호환성 문제라는 것을 깨달았네요.

결국 서브컴에 firefox 3.0을 새로 설치하고 firebug 1.3.3과 firePHP 0.3.1로 다시 작업을 하고 있습니다.

firefox 3.5가 릴리즈된지 얼마 안된 상황인데도 벌써 firebug 1.4.0b4로 4번째 베타를 발표한만큼 빠른 정식릴리즈를 기대해봅니다.


현재 firebug가 1.4.0b7 까지 릴리즈 되었습니다. 하지만 여전히 firePHP와 호환이 안되는 문제는 보여주더군요. 그런데 firePHP의 릴리즈 페이지에보니 호환목록에 firefox 3.5가 버젓히 적혀있는게 아니겠습니까?

뭔가 다른 문제가 있다는 것을 느끼고 조사해 본 결과 현재사용하고 있는 Firefox Portable의 문제인 것으로 확인이 되었습니다. 이게 Portable런쳐로 실행하면 정상작동하지 않고, FirefoxPortable\App\firefox 안의 firefox.exe를 직접실행하면 제대로 동작을 하네요.

결국엔 Portable 버전을 밀고 다시 설치형 버전으로 바꾼다음 Extention 폴더와 bookmark.xml  , bookmark.html 파일만 가져와서 사용하고있습니다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/07/04 22:47 2009/07/04 22:47
─ tag  , ,

위의 두 어플은 플래시 업로더라는 것을 사용하는데, 이 플래시가 10버전으로 업데이트 되면서 사용법이 바뀌어 이전 소스에서는 동작안하게 된 것이라고 한다. 인터넷만 돌아다녀도 플래시는 자동으로 업데이트 되니 갑자기 안되도 원인을 찾아내기가 쉽지 않았다.

다행히 이미 패치된 버전들이 존재하고(태터는 1.7.6부터) 그 해결 법으로는

플래시를 다운그레이드
플래시 업로더를 사용안함
어플을 최신버전으로 패치

이렇게 세가지 방법이 나와 있었다.

자세한 내용은 아래 사이트를 참조하자.

http://www.keyboardwarrior.net/v4/bbs/ ··· d%3D3315 (새 창으로 열기)

이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/01/11 00:00 2009/01/11 00:00
./test\unit\product_test.rb:1:in `require': no such file to load -- test_helper (LoadError)
 from ./test\unit\product_test.rb:1
 from E:\Rails\.metadata\.plugins\org.radrails.rails.core\run_auto2.rb:2:in `require'
 from E:\Rails\.metadata\.plugins\org.radrails.rails.core\run_auto2.rb:2
 from E:/Rails/.metadata/.plugins/org.rubypeople.rdt.testunit/RemoteTestRunner.rb:294:in `require'
 from E:/Rails/.metadata/.plugins/org.rubypeople.rdt.testunit/RemoteTestRunner.rb:294


require 'test/test_helper'

class ProductTest < ActiveSupport::TestCase
# Replace this with your real tests.
fixtures :products
def test_truth
assert true
end
end

Aptana Studio RadRails를 사용하는 사용자라면 Auto Test Suite를 실행했을 경우 위와 같은 에러를 쉽게 접할 수 있다. 이는 각 xxxx_test.rb 파일의 require 값이 잘 못 되어 있어서 발생하는 데, 대부분 require 값의 앞에 test/ 경로를 추가해 주면 해결이 가능하다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/07/31 13:49 2008/07/31 13:49

<h1>Administrators</h1>
<ul>
<% for user in @all_users %>
<li>
<%= link_to "[X]",
{ :controller => 'login' , :action => 'delete_user', :id => user },
{ :method => :post , :confirm => "Really delete #{user.name}?" }
-%>
<%=h user.name%>
</li>
<% end %>
</ul>
/depot/app/views/login/list_users.html.erb line 7 < 책 218쪽 >

:post => true 에서 :method => :post 로 변경하여야 정상 작동한다.

:post => true 라고 쓰면 단지 <a> 태그안에 post = true 라고 변환한다.
즉 결과물은 <a href="xxxx" post=true>xxxx</a> 당연히 정상동작하지 않는다.
앞에서 배운대로  :method => :post 로 작성하면 rails에서 자동으로 post 로 값을 보내는 스크립트를 만들어준다.


<a href="/login/delete_user/4"onclick="if (confirm('Really delete xxxx?'))
{ var f = document.createElement('form'); f.style.display = 'none';
this.parentNode.appendChild(f); f.method = 'POST';
f.action = this.href;var s = document.createElement('input');
s.setAttribute('type', 'hidden'); s.setAttribute('name', 'authenticity_token');
s.setAttribute('value', '해쉬값'); f.appendChild(s);f.submit(); };return false;"
>
:method => :post 로 작성한 결과물.
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/07/31 09:55 2008/07/31 09:55
 
원본
<%= form_remote_tag :url => { :action => :add_to_cart, :id => product } do %>
<%= submit_tag "Add to Cart" %>
<%= end %>
수정 후

<% form_remote_tag :url => { :action => :add_to_cart, :id => product } do %>
<%= submit_tag "Add to Cart" %>
<% end %>

/app/views/store/index.rhtml file 14 line <책 162쪽>

순환문과 end가 책에서는 <%= 태그 안에들어있어서 에러를 발생시킨다.
각각 <% 로 바꿔주면 문제는 사라진다.

<%

루비코드의 시작을 알리는 태그. 결과 반환이 필요없는 코드들이 들어갈 때 사용한다.

<%=

해당 태그안의 결과물이 출력되길 원할 때 사용한다.

<%=h

해당 태그안의 결과물이 보안에 취약하지 않게 변환되어서 출력된다. < 가 &lt로 변환 되는 식으로 출력될 결과물이 html 태그나 실행될 수 있는 코드로 이용되지 않게 막는다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/07/18 17:26 2008/07/18 17:26

[에러잡기] 레일스와 함께하는 애자일 웹 개발 in Rails 2.0.2

[8 장 태스크C : 장바구니 생성]에서 Rails 2.0.2를 사용하는 경우 발생하는 문제점에 대한 정리와 해결책 입니다.

발생 경위

/config/environment.rb file 42 line <책 132p>

# Use the database for sessions instead of the cookie-based default,
# which shouldn't be used to store highly confidential information
# (create the session table with 'rake db:sessions:create')

config.action_controller.session_store = :active_record_store

데이터베이스에서 세션 두기 항목에서 세션정보의 저장소를 데이터 베이스로 지정하는 과정에서
위의 빨간부분만 주석처리를 제거할 것을 지시하고 있습니다. 책을 따라갈 경우 아래와 같은 에러 메세지를 만날 수 있습니다.
 
ActionController::InvalidAuthenticityToken

No :secret given to the #protect_from_forgery call.  Set that or use a session store capable of generating its own keys (Cookie Session Store).

비밀이 위조로부터 보호라는 요청을 했다. 가 되나요? 여기서 secret은 비밀이 아니라 secret이라는 객체를 뜻하는 것 같습니다.

해결책

이 부분은 /config/enviroment.rb 에서 해결책을 찾을 수 없고, /app/controllers/application.rb 에서 답을 찾을 수 있습니다. 몇줄안 되는 소스인데 뒤져보면 secret에 관한 주석을 찾을 수 있습니다.

/app/controllers/application.rb file 7 line

# See ActionController::RequestForgeryProtection for details
# Uncomment the :secret if you're not using the cookie session store
protect_from_forgery
  :secret => '8c0e411f8a0da1fd5e01bd72a0c3f4b7'

당신이 쿠키 세션 저장소를 사용하고 있지 않다면 :secret의 사용을 추천하지 않는다. 쿠키 세션 저장소를 사용하고 있지 않다면 :secret의 주석을 없애세요. 라고 하는것 같군요. 빨간 부분의 주석을 없애주면 위의 에러는 사라집니다. 영어가 짧고 ruby에 대한 이해도 짧은 터라 이해하기엔 많이 부족한 감이 있네요. 이유를 설명해 주실 수 있는 분 설명 부탁해요~! db에 들어간 세션값의 도용을 막기 위해 추가된 사항인 듯 합니다.


이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/07/10 11:49 2008/07/10 11:49
PHP에서 XPATH를 편하게 쓸수있도록 구성한 클래스 소스를 제공한다.

http://scripts.carrubbers.org/scripts/php/xpath/


현재 3.5버전까지 나왔으며 3.5버전부터 php5가 완벽호완된다고 한다.
마지막 릴리즈 날자가
Php.XPath Version 3.5 - 13th August 2004

다양한 예제소스도 같이 포함되어있어 공부하기는 편할것 같다.
문제는 내가 쓰는서버에 웹어플계정이 쓰기권한이 없다는거 -_-;..
파일을 못만드는 무조건 메모리상에서 처리해야된다 ( ... )
이올린에 북마크하기
2007/05/27 22:10 2007/05/27 22:10
─ tag  , ,
openclose