어제 있었던 실습 강사님 풀이
날짜와 IP를 얻어오기 위해 스크립트를 추가해줌
이렇게 작성하게 되면 BT에 getcookie.php에 넘어온다.
보안설정을 할 때 코드는 이렇게 넣는다.
이걸 넣을 땐 webhack으로 들어가서 boad로 들어가서 board_write.asp로 들어가서
submit()바로 전에 추가해주면 되는 것이다.
그렇게 해서 공격자가 스크립트를 작성해 눌러보게 된다면 script가 생략되었다.
이걸 우회하려면 script를 대문자를 섞어서 해준다. ex) sCRipt, scrIpT ...
그러면 다시 스크립트가 가능해진다.
이것을 막는 방법은 아까 복사해서 넣었던 코드에 i옵션을 넣어준다.
이런식으로 넣으면 i옵션은 대소문자 다 막아주는 것
이걸 우회하는 방법으로는
스크립트를 작성할 때 두번씩 작성을 해준다. ex) scriptscript
그러면 replace는 한번만 작동하기 때문에 뒤에껀 실행이 된다.
이 우회방법을 막는 방법은 i옵션과 마찬가지로 g옵션을 사용하면 된다.
이런식으로 하면 g옵션으로
이걸 다시 우회하는 방법으로는 스크립트를 쓸 때 순서대로 탐지한다는 특성으로
스크립트를 쓸 때 이런식으로 작성해준다 sscriptcript그러면 중간에 script가 사라지면서
다시 script라는 단어가 만들어지기 때문에 다시 작동이 된다.
이걸 막는 방법은 script라는 단어를 a라고 바꾸는 걸로 막을 순 있지만 script를 쓰지않고
정말 script라는 단어를 사용하고 싶을 때 a로 바뀌면 안되기 때문에 좋은 방법이라곤 할순 없다.
html 인코딩을 사용해서 <>를 인코딩해서 사용을 한다.
로 이렇게 처리하게 되면 작성자가 <를 쓰더라도 정상적으로 표시는 되고 공격자가 악의적으로 쓴다고 해도 태그로 인식을 못하기 때문에 스크립트가 실행이 안된다. 그리고 쓴 그대로 게시글이 나오게된다.
조금 다른 생각을 해보면 이전에 작성해서 남아있는 게시글을 어떻게 막을 수 있을까 ?
이건 열 때 생기는 문제기 때문에 board.viw로 들어가서 html인코딩으로 <>를 치환해주면 될것이다.
뭔지는 잘 모르겠지만 아래쪽에 이 부분에 내용인 Content부분을 바꾸면 되지않을까 하는 것
content 아래 부분에
이런식으로 작성해줌 이걸 확인해볼 때는 아까 board.write에서 넣었던 부분을 지워야한다.
이걸 지워주고 스크립트가 작성은 되지만 게시글을 열어볼 때 스크립트가 실행되지 않는다.
피해자가 모르는 시점에서 피해자의 정보를 바꾸려고 한다.
피해자는 그냥 웹사이트를 읽었던걸로 정보가 바뀌는 것이다.
paros로 가서 패킷을 잡아보면 이쪽으로 패킷이 가는걸 확인할 수 있다.
GET http://192.168.1.20/member/member_modify.asp HTTP/1.0
이 패킷이 변경하기를 누르기전 패킷이고
GET http://192.168.1.20/member/member_modify_ok.asp?exec=modify&nickname=jinhoya&email=iwantgohome@naver.com HTTP/1.0
이 패킷이 변경하기를 누르고 패킷이다.
첫번째를 스크립트로 짤 필요는 없을 것 같다.
우리가 필요한 정보가 nickname과 email의 검색을 갖고싶다.
그것에 대한 스크립트는
위에에서 복사해서 가져온다. 그리고 글쓰기로 올려준다
그리고 그 글을 읽게되고 패킷을 확인해보면 지정해준 파일로 잘 넘겨주는걸 확인할 수 있음
위에 스크립트를 조금 바꿔주고 글을 이렇게 작성한다.
이렇게 관리자로 접속을 하고 아까 썼던 글을 관리자가 읽게된다면 정보가 바뀌어있다.
원래는 jinhoya라는 닉네임과 iwantgohome@naver.com라는 이메일이 적혀있었다.
나는 그냥 글을 읽었을 뿐인데 나도 모르는 사이에 내 권한으로 글이 등록되어있다.
우선 글쓰기를 눌렀을 때 패킷을 어디로 가서 저장이 되는지 부터 확인을 해준다.
글쓰기 패킷을 일단 넘겨줌
글쓰기 하고 작성완료 눌렀을 때 넘기는 페이지가 어딘지 확인한다 POST방식으로 넘기는걸 확인한다.
name, password, email, subject, tag, content의 바뀌는 내용을 스크립트로 작성을 해줘야함
이렇게 스크립트 작성해서 글쓰기를 눌렀다.
이렇게 하게 되면 tag가 작성으로 들어가기 때문에 저 경로로 보내줘야한다.그렇게 하려면 이렇게 스크립트를 새로 작성해준다.
를 이렇게 줬기 때문에 맨 앞에 form의 이름도 적어줘야한다.
이렇게 작성하고 글을 쓰게되면 읽을 때마다 새 글이 생성된다.
하지만 글에 들어가지진 않는다. 그렇다고 뷰로 들어는 가지만 바로 나와진 것
그래서 우리 눈에는 안읽히는 것 처럼 읽힌다.
이 form문을 frame문으로 덮어씌운다. 그냥 틀의 형식을 만드는것이다 라는 것
이런식으로 작성한다. 그러면 악성 글도 읽을 수 있음 뭔가 좀 수상해보이긴 하지만..
'학원' 카테고리의 다른 글
2023/07/25 SQL 정의어(DDL), 조작어(DML) (0) | 2023.07.25 |
---|---|
2023/07/24 자격증, datebases (0) | 2023.07.24 |
2023/07/20 크로스 사이트 스크립팅 (0) | 2023.07.20 |
2023/07/19 디렉터리 리스닝 (0) | 2023.07.19 |
2023/07/18 SSS, CSS, Web, 인증 (0) | 2023.07.18 |