php, asp, jsp 등의 인터프리터 파일에 관해...

orangecrs의 이미지

php, asp, jsp 등의 파일은 웹서버에서 다운로드가 안되죠...
이걸가능하게 하는 알고리즘을 알고 싶습니다.
생각으로는 간단하게 해당파일에 관한 요청이 들어오면 서버데몬은 전송하지
않고 인터프리터후 전송한다... 이거인데...
익스텐션 옵션이 꺼져있고 디렉토리의파일을 볼수 있을때 다운로드가 가능하지 않나요?(아니면 ^^;; 이후의 이야기는 의미가 없습니다...ㅋㅋㅋ... 설정 안해본이유는 막연한 기대감이랄까요?^^;; ) 그때는 왜 그 접근에 관해서는 인터프리터를 하지 않는지...

그렇다면 파서를 바꿀수 있다는 이야기인데...(뜬금없지만... 이런저런이유로...)
예를들면 플래시파일에서 이진코드 텍스트파일을 읽을수 있는데요...
"var1=xxx&var2=x2x2x2 ...." 처럼... 그렇다면 비록 클라이언트 레벨의 플러그인일지라도 그 플러그인의 변환으로 다른 인터프리터의
소스파일을 그대로 읽을 수 있지않을까하는 생각이 듭니다.

어쨋든... 그냥 생각해서 해보자는 식이기땜에...
자바로 플러그인을 만들어보곤 있습니다... 파서관련 API보고있다가 다시생각해보자 생각하고 뒤늦게 KLDP에 올려보자라는 생각으로 올려봅니다...

그럼...

만약 이거되면...(공력부족한 저로서는 안될거라는 결과가보이지만...) 제로보드 망하고... 인터프리터를 이용한 웹서비스로 자료실이용불가능... 일것 같습니다...

:D

temper의 이미지

인터프리팅은 HTTP데몬 뒤에서 이루어 지는거지요.
CLIENT <---> |웹| <---> HTTP <---> CGI

인터프리팅은 <? ?> 나 <% %> 를 만났을 때만 하고요...
<? ?> 나 <% %> 의 내용은 언제나 CGI 에게 던져주고
CLIENT 는 HTTP 하고만 대화합니다.

opt의 이미지

Web Browser -> HTTP Server -> PHP, ASP, JSP 처리기
이런 식으로 처리가 되는 것으로 압니다.

Web Browser 에서 PHP나 ASP, JSP 요청이 들어오면 웹 서버는 '저는 이것을 잘 모르겠는데, 환경 설정에 보니 별도의 처리기가 담당한다고 하네요. 넘겨드리겠으니 알아서 처리하십시오' 하고 넘겨줍니다.

그러면 해당 처리기가 처리를 한 후 결과를 반환해주고 이를 사용자 웹 브라우저에서 보여주는 방식입니다.

PHP 모듈이나 서블릿 컨테이너가 내려가 있는 사이에 요청을 해도 웹 서버는 환경 설정에 기록된대로 충실히 처리기에 넘겨줍니다. 이때 처리기가 없으므로 결과에는 아무 변화가 없이 사용자 브라우저에 그대로 반환되기 때문에 소스가 보이는 것입니다.

플래쉬의 경우는 조금 다른데, 플래쉬는 사용자 브라우저에 다운받아져서 실행되는 것이고 PHP, ASP, JSP는 서버측 스크립트입니다. 따라서 해당 처리기에 문제가 생겨서 이상 작동한다거나, 소스가 노출되는 별도의 취약점이 있지 않은 이상은 원본 소스가 노출될 일이 없습니다.

물론 웹 서버로 요청을 할 때 해당 PHP가 PHP가 아닌 것으로 속일 수만 있다면 웹 서버가 그대로 소스를 반환해주겠지만, foo.php 를 php 가 아닌 것으로 속이기 위해 다른 확장자(foo.phpa)를 준다던지 하면 웹 서버의 입장에선 존재하지 않는 파일을 요청하는 것이므로, 404 Not found 에러가 나겠지요.

Quote:
그렇다면 파서를 바꿀수 있다는 이야기인데...(뜬금없지만... 이런저런이유로...)

전제가 틀린게 아닌가 싶네요.

과거에 PHP, ASP, JSP 모두 특정한 특수문자열을 요청하면 해당 소스가 PHP, ASP, JSP 인줄 모르고 웹 서버가 그대로 반환하여 소스가 보이는 취약점이 여러 차례 문제로 발견되었습니다. 하지만 해당 공격 기법은 파서를 바꾸는 것은 아닌 듯...

----
LUX ET VERITAS | Just for Fun!

소타의 이미지

아마 그게 가능하다면 많은 닷컴기업들이 무너지지 않을까 싶습니다. (물론 그 전에 패치되어 막히겠지만요..)

어떤 확장자를 가진 스크립트를 어떤 파서가 처리한다는 웹서버의 구동 환경 변수입니다. ?var1=???&var2=???? 는 한 클라이언트가 요청하는 파일에 대한 변수(?)일 뿐이구요. 웹서버가 직접 쿼리스트링을 처리하는 경우는 드뭅니다. 물론 각 스크립트에 대한 파서가 지정되지 않는다면 소스코드를 다운 받을 수 있겠지만 이건 어떤 헛점을 노린다거나 버그가 아닌 정상적인 경로가 되겠지요. 하지만 정상적인 세팅이 되어 있을 때에는 불가능 하다고 봅니다. 구조는 윗분들께서 잘 설명해 주셨으므로 ^^;

웹서버가 파서에게 역할을 넘기고 말고는 쿼리스트링으로 결정되지 않습니다. 오직 웹서버의 설정으로만 바뀔수 있고 이는 HTTP 인터페이스로는 불가능합니다.
그럼 :)

orangecrs의 이미지

답변 잘들었습니다... 하지만...

^^;;

아 답답하네요...
말하고 싶은데 말은 몬하겠고...

되면 말쓰드릴께요... ^^ (말없으면 안된거겠죠?^^;; 말하면 쪽팔리잖아요..~~^^;;

하지만 지금은...
업무중...
ㅋㅋㅋ

---------------------------------------------------
야!...

랜덤여신의 이미지

훗...

해킹 입문중이십니까? :D

성공하신다면, 굉장한 것을 발견하게 되겠네요.

orangecrs의 이미지

힌트를 드릴께요...
서버가 "="을 쿼리받았을때 이건 쿼리한 클라이언트에서도 받아 드리거든요...
근데 이 파서를 바꿀수 있다는거죠...
이까지는 클라이언트 쪽에서의 일이구요... 서버에서 어케 처리하냐... 이건데...
공력의 부족으로 잘못이해했을진몰라도... 왠지 확신이 서네요...
^^;;

아~~~!! implement여...
...ㅋㅋㅋ

---------------------------------------------------
야!...

progcom의 이미지

웹 요청이 시작해서부터 끝날

zltek의 이미지

orangecrs wrote:
힌트를 드릴께요...
서버가 "="을 쿼리받았을때 이건 쿼리한 클라이언트에서도 받아 드리거든요...
근데 이 파서를 바꿀수 있다는거죠...
이까지는 클라이언트 쪽에서의 일이구요... 서버에서 어케 처리하냐... 이건데...
공력의 부족으로 잘못이해했을진몰라도... 왠지 확신이 서네요...
^^;;

아~~~!! implement여...
...ㅋㅋㅋ


'=' 라는 건 혹시 URL에서 '?' 뒤에 따라붙는 변수들 얘깁니까? QUERY STRING 으로 뭘 하실 수 있다는 건지 감도 안 잡히네요.

"no error was found with his codes"

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.